mirror of
https://github.com/directus/directus.git
synced 2026-01-26 18:48:11 -05:00
44 lines
1004 B
TypeScript
44 lines
1004 B
TypeScript
import logger from './logger';
|
|
import { createTerminus, TerminusOptions } from '@godaddy/terminus';
|
|
import http from 'http';
|
|
import emitter from './emitter';
|
|
import database from './database';
|
|
import app from './app';
|
|
|
|
const server = http.createServer(app);
|
|
|
|
const terminusOptions: TerminusOptions = {
|
|
timeout: 1000,
|
|
signals: ['SIGINT', 'SIGTERM', 'SIGHUP'],
|
|
beforeShutdown,
|
|
onSignal,
|
|
onShutdown,
|
|
};
|
|
|
|
createTerminus(server, terminusOptions);
|
|
|
|
export default server;
|
|
|
|
async function beforeShutdown() {
|
|
await emitter.emitAsync('server.stop.before', { server });
|
|
|
|
if (process.env.NODE_ENV === 'development') {
|
|
logger.info('Restarting...');
|
|
} else {
|
|
logger.info('Shutting down...');
|
|
}
|
|
}
|
|
|
|
async function onSignal() {
|
|
await database.destroy();
|
|
logger.info('Database connections destroyed');
|
|
}
|
|
|
|
async function onShutdown() {
|
|
emitter.emitAsync('server.stop').catch((err) => logger.warn(err));
|
|
|
|
if (process.env.NODE_ENV !== 'development') {
|
|
logger.info('Directus shut down OK. Bye bye!');
|
|
}
|
|
}
|