phase-10.5: market screener ui enhancements
This commit is contained in:
@@ -1,16 +1,27 @@
|
||||
import type { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify';
|
||||
import type { FastifyInstance, FastifyReply, FastifyRequest, preHandlerHookHandler } from 'fastify';
|
||||
import { MarketCallRepository } from '../../domains/shared';
|
||||
import { CalendarService } from './CalendarService';
|
||||
import { ScreenerEngine } from '../screener';
|
||||
import type { SnapshotEntry } from '../../domains/shared';
|
||||
import { callSchema } from '../../domains/shared/types/schemas';
|
||||
|
||||
interface CallsControllerOptions {
|
||||
authGuard?: preHandlerHookHandler;
|
||||
traderGuard?: preHandlerHookHandler;
|
||||
}
|
||||
|
||||
export class CallsController {
|
||||
readonly #guards: preHandlerHookHandler[];
|
||||
|
||||
constructor(
|
||||
private readonly repo: MarketCallRepository,
|
||||
private readonly engine: ScreenerEngine,
|
||||
private readonly calendar: CalendarService,
|
||||
) {}
|
||||
options: CallsControllerOptions = {},
|
||||
) {
|
||||
this.#guards =
|
||||
options.authGuard && options.traderGuard ? [options.authGuard, options.traderGuard] : [];
|
||||
}
|
||||
|
||||
private static toSnapshot(r: any): SnapshotEntry | null {
|
||||
if (!r) return null;
|
||||
@@ -30,8 +41,12 @@ export class CallsController {
|
||||
app.get('/api/calls', this.list.bind(this));
|
||||
app.get('/api/calls/calendar', this.handleCalendar.bind(this));
|
||||
app.get('/api/calls/:id', this.get.bind(this));
|
||||
app.post('/api/calls', { schema: callSchema }, this.create.bind(this));
|
||||
app.delete('/api/calls/:id', this.remove.bind(this));
|
||||
app.post(
|
||||
'/api/calls',
|
||||
{ schema: callSchema, preHandler: this.#guards },
|
||||
this.create.bind(this),
|
||||
);
|
||||
app.delete('/api/calls/:id', { preHandler: this.#guards }, this.remove.bind(this));
|
||||
}
|
||||
|
||||
private async list() {
|
||||
|
||||
Reference in New Issue
Block a user