diff --git a/src/server/plugins/shutdown.ts b/src/server/plugins/shutdown.ts new file mode 100644 index 0000000..3e5d0cf --- /dev/null +++ b/src/server/plugins/shutdown.ts @@ -0,0 +1,23 @@ +import { closeDB } from '@/server/db' + +export default () => { + if (import.meta.dev) return + + let exiting = false + + const shutdown = async () => { + if (exiting) { + process.exit(0) + } + exiting = true + + // Brief delay to let srvx close the HTTP server first + setTimeout(async () => { + await closeDB() + process.exit(0) + }, 500) + } + + process.on('SIGINT', shutdown) + process.on('SIGTERM', shutdown) +} diff --git a/vite.config.ts b/vite.config.ts index 6696f32..756cfe7 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -15,7 +15,7 @@ export default defineConfig({ nitro({ preset: 'bun', serveStatic: 'inline', - plugins: ['./src/server/plugins/migrate.ts'], + plugins: ['./src/server/plugins/migrate.ts', './src/server/plugins/shutdown.ts'], }), ], resolve: {