diff --git a/apps/backend/src/datasources/postgres/SystemDataSource.ts b/apps/backend/src/datasources/postgres/SystemDataSource.ts index 577351c4db..2cb5e951cf 100644 --- a/apps/backend/src/datasources/postgres/SystemDataSource.ts +++ b/apps/backend/src/datasources/postgres/SystemDataSource.ts @@ -7,7 +7,7 @@ export default class PostgresSystemDataSource implements SystemDataSource { async connectivityCheck(): Promise { try { return database - .raw('select * FROM "settings" LIMIT 1') + .raw('SELECT 1') .then(() => { return true; }) diff --git a/apps/backend/src/middlewares/readinessCheck.ts b/apps/backend/src/middlewares/readinessCheck.ts index b8e39e296e..037aeae3bc 100644 --- a/apps/backend/src/middlewares/readinessCheck.ts +++ b/apps/backend/src/middlewares/readinessCheck.ts @@ -5,21 +5,30 @@ import baseContext from '../buildContext'; const router = express.Router(); -router.get('/readiness', (req: Request, res: Response) => { +router.get('/readiness', async (req: Request, res: Response) => { try { - baseContext.queries.system - .connectivityCheck() - .then((success) => { - success ? res.status(200) : res.status(500); - res.end(); - }) - .catch((e) => { - logger.logException('Readiness check failed', e); - res.status(500).end(); - }); + const success = await baseContext.queries.system.connectivityCheck(); + const responseStatus = success ? 200 : 503; + res.status(responseStatus).json({ + application: { + status: 'UP', + database: { + status: success ? 'UP' : 'DOWN', + message: success ? 'Connected' : 'Not connected', + }, + }, + }); } catch (e) { logger.logException('Readiness check failed', e); - res.status(500).end(); + res.status(500).json({ + application: { + status: 'DOWN', + database: { + status: 'DOWN', + message: 'Could not perform readiness check', + }, + }, + }); } });