@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
JavaScript
;
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