From 0d9ad99e3d014a1609df230327637a4b1aa31b6d Mon Sep 17 00:00:00 2001 From: Mithun Kamath Date: Thu, 28 May 2020 11:35:48 +0530 Subject: [PATCH] Add /health endpoint for health check --- src/common/errors.js | 3 ++- src/modules/health/controller.js | 11 +++++++++++ src/modules/health/route.js | 12 ++++++++++++ src/modules/health/service.js | 17 +++++++++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/modules/health/controller.js create mode 100644 src/modules/health/route.js create mode 100644 src/modules/health/service.js diff --git a/src/common/errors.js b/src/common/errors.js index d1fd740..546ccee 100644 --- a/src/common/errors.js +++ b/src/common/errors.js @@ -21,5 +21,6 @@ module.exports = { newEntityNotFoundError: msg => new AppError(404, msg || 'The entity does not exist.'), newAuthError: msg => new AppError(401, msg || 'Auth failed.'), newPermissionError: msg => new AppError(403, msg || 'The entity does not exist.'), - newConflictError: msg => new AppError(409, msg || 'The entity does not exist.') + newConflictError: msg => new AppError(409, msg || 'The entity does not exist.'), + serviceUnavailableError: msg => new AppError(503, msg || 'One or more services are not available') } diff --git a/src/modules/health/controller.js b/src/modules/health/controller.js new file mode 100644 index 0000000..cfd94c2 --- /dev/null +++ b/src/modules/health/controller.js @@ -0,0 +1,11 @@ +/** + * the role controller + */ + +const service = require('./service') +const helper = require('../../common/helper') +const methods = helper.getControllerMethods(service) + +module.exports = { + ...methods +} diff --git a/src/modules/health/route.js b/src/modules/health/route.js new file mode 100644 index 0000000..1189977 --- /dev/null +++ b/src/modules/health/route.js @@ -0,0 +1,12 @@ +/** + * the health routes + */ + +const Controller = require('./controller') +module.exports = { + '/health': { + get: { + method: Controller.get + } + } +} diff --git a/src/modules/health/service.js b/src/modules/health/service.js new file mode 100644 index 0000000..d1cf1fe --- /dev/null +++ b/src/modules/health/service.js @@ -0,0 +1,17 @@ +const errors = require('../../common/errors') +const models = require('../../models') + +async function get () { + // Check QLDB Connection by retrieving a session + try { + const session = await models.DBHelper.getSession() + + session.close() + } catch (e) { + throw errors.serviceUnavailableError(`QLDB is unavailable, ${e.message}`) + } + + return { checksRun: 1 } +} + +module.exports = { get }