import { DDBConnector } from "../models/connector/DDBConnector"; import AudienceHashMap from "../services/scoringSystem/audienceHashMap.service"; import CallToActionHashMap from "../services/scoringSystem/callToActionHashMap.service"; import { ContextHashMap } from "../services/scoringSystem/contextHashMap.service"; export class HealthService { constructor( private readonly dynamoConnector: DDBConnector, private readonly contextHashMap: ContextHashMap, private readonly callToActionHashMap: CallToActionHashMap, private readonly audienceHashMap: AudienceHashMap ) {} async health() { const dynamoResult = (await this.dynamoConnector.health()) ? "UP" : "DOWN"; const statusCode = HealthService.getStatusCode([dynamoResult]); const status = statusCode === 200 ? "UP" : "DOWN"; return { status: statusCode, details: { status, dynamoConnector: dynamoResult, contextHashMap: this.contextHashMap.getStatus(), callToActionHashMap: this.callToActionHashMap.getStatus(), audienceHashMap: this.audienceHashMap.getStatus(), }, }; } static getStatusCode(serviceHealths: string[]) { return serviceHealths.every((s) => s === "UP") ? 200 : 500; } }