UNPKG

@piggly/fastify-chassis

Version:

An ESM/CommonJS toolkit to help you to do common operations in your back-end applications with Fastify and NodeJS.

80 lines 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HealthCheckService = void 0; const tslib_1 = require("tslib"); const debug_1 = tslib_1.__importDefault(require("debug")); /** * @file Handle health check services. * @copyright Piggly Lab 2024 */ class HealthCheckService { /** * Handlers to check. * * @type {Map<string, () => Promise<boolean>>} * @protected * @memberof HealthCheckService * @since 4.0.0 * @author Caique Araujo <caique@piggly.com.br> */ handlers; /** * Constructor. * * @public * @constructor * @memberof HealthCheckService * @since 4.0.0 * @author Caique Araujo <caique@piggly.com.br> */ constructor() { this.handlers = new Map(); } /** * Check all handlers. * * @returns {Promise<{ * success: boolean; * services: Record<string, boolean>; * }>} * @public * @memberof HealthCheckService * @since 4.0.0 * @author Caique Araujo <caique@piggly.com.br> */ async check() { let success = true; const services = {}; for (const [name, handler] of this.handlers) { try { services[name] = await handler(); } catch (error) { services[name] = false; (0, debug_1.default)('app:healthcheck:error')(`${name} failed to health check`, error); } finally { success = success && services[name]; } } return { services, success, }; } /** * Register a new handler. * * @param {string} name * @param {() => Promise<boolean>} handler * @public * @memberof HealthCheckService * @since 4.0.0 * @author Caique Araujo <caique@piggly.com.br> */ register(name, handler) { this.handlers.set(name, handler); } } exports.HealthCheckService = HealthCheckService; //# sourceMappingURL=HealthCheckService.js.map