From de69622064ae9865e02f16de9e06713d43a69038 Mon Sep 17 00:00:00 2001 From: Fredrik Oseberg Date: Mon, 9 Aug 2021 14:25:24 +0200 Subject: [PATCH] Add project-health.ts --- .../admin-api/project/project-health.ts | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/lib/routes/admin-api/project/project-health.ts diff --git a/src/lib/routes/admin-api/project/project-health.ts b/src/lib/routes/admin-api/project/project-health.ts new file mode 100644 index 0000000000..1de38978f0 --- /dev/null +++ b/src/lib/routes/admin-api/project/project-health.ts @@ -0,0 +1,44 @@ +import { Request, Response } from 'express'; +import Controller from '../../controller'; +import { IUnleashServices } from '../../../types/services'; +import { IUnleashConfig } from '../../../types/option'; +import ProjectHealthService from '../../../services/project-health-service'; +import { Logger } from '../../../logger'; +import { IProjectParam } from '../../../types/model'; +import { handleErrors } from '../util'; + +export default class ProjectHealthReport extends Controller { + private projectHealthService: ProjectHealthService; + + private logger: Logger; + + constructor( + config: IUnleashConfig, + { + projectHealthService, + }: Pick, + ) { + super(config); + this.logger = config.getLogger('/admin-api/project/health-report'); + this.projectHealthService = projectHealthService; + this.get('/:projectId/health-report', this.getProjectHealthReport); + } + + async getProjectHealthReport( + req: Request, + res: Response, + ): Promise { + const { projectId } = req.params; + try { + const overview = await this.projectHealthService.getProjectHealthReport( + projectId, + ); + res.json({ + version: 2, + ...overview, + }); + } catch (e) { + handleErrors(res, this.logger, e); + } + } +}