import { Request, Response } from 'express'; import { DyFM_HttpCallType } from '@futdevpro/fsm-dynamo'; import { DyNTS_Controller } from '../../_services/route/controller.service'; import { DyNTS_Endpoint_Params } from '../../_models/control-models/endpoint-params.control-model'; import { DyNTS_Scheduler_Service } from './scheduler.service'; /** * A scheduler controller konfiguracioja. * Az authPreProcess opcionalis — ha megadod, a /runs endpoint vedett lesz. */ export interface DyNTS_SchedulerController_Config { /** Opcionalis auth preprocess. Ha nincs megadva → nyilt hozzaferes. */ authPreProcess?: (req: Request, res: Response) => Promise; } /** * NTS Scheduler Controller — read-only futas-naplo endpoint a job-utemzohoz. * * Hasznalat: * DyNTS_getSchedulerRoutingModule() — auth nelkul * DyNTS_getSchedulerRoutingModule({ authPreProcess: myAuth }) — auth-tal */ export class DyNTS_Scheduler_Controller extends DyNTS_Controller { private static config: DyNTS_SchedulerController_Config = {}; static configure(config: DyNTS_SchedulerController_Config): void { DyNTS_Scheduler_Controller.config = config; } static getInstance(): DyNTS_Scheduler_Controller { return DyNTS_Scheduler_Controller.getSingletonInstance(); } private readonly schedulerService: DyNTS_Scheduler_Service = DyNTS_Scheduler_Service.getInstance(); setupEndpoints(): void { const preProcesses: ((req: Request, res: Response) => Promise)[] = []; if (DyNTS_Scheduler_Controller.config.authPreProcess) { preProcesses.push(DyNTS_Scheduler_Controller.config.authPreProcess); } this.endpoints = [ // GET /runs?limit=100 — utolso N futas, legujabb elol new DyNTS_Endpoint_Params({ name: 'getSchedulerRuns', type: DyFM_HttpCallType.get, endpoint: '/runs', preProcesses: preProcesses, logRequest: false, tasks: [ async (req: Request, res: Response): Promise => { const limit: number = Math.min(parseInt(req.query.limit as string) || 100, 500); const runs: ReturnType = this.schedulerService.getRuns(limit); res.send({ jobs: this.schedulerService.getJobKeys(), started: this.schedulerService.isStarted(), returned: runs.length, runs: runs, }); }, ], }), ]; } }