diff --git a/api/src/cli/commands/start.ts b/api/src/cli/commands/start.ts index 6c01d16a30..696dc12340 100644 --- a/api/src/cli/commands/start.ts +++ b/api/src/cli/commands/start.ts @@ -1,6 +1,7 @@ import knex from 'knex'; import logger from '../../logger'; import { Express } from 'express'; +import emitter from '../../emitter'; export default async function start() { const { default: env } = require('../../env'); @@ -20,7 +21,7 @@ export default async function start() { const signals: NodeJS.Signals[] = ['SIGHUP', 'SIGINT', 'SIGTERM']; signals.forEach((signal) => { process.on(signal, () => - server.close((err) => { + server.close(async (err) => { if (err) { logger.error(`Failed to close server: ${err.message}`, { err, @@ -29,18 +30,17 @@ export default async function start() { } logger.info('Server stopped.'); - connection - .destroy() - .then(() => { - logger.info('Database connection stopped.'); - process.exit(0); - }) - .catch((err) => { - logger.info(`Failed to destroy database connections: ${err.message}`, { - err, - }); - process.exit(1); + try { + await emitter.emitAsync('destroy', { app }); + await connection.destroy(); + logger.info('Database connection stopped.'); + process.exit(0); + } catch (err) { + logger.info(`Failed to destroy database connections: ${err.message}`, { + err, }); + process.exit(1); + } }) ); });