From 1af5d4e3c0a9af43f07b98083aba0238de4a6b16 Mon Sep 17 00:00:00 2001 From: imbytecat Date: Thu, 2 Apr 2026 07:48:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E4=BA=8C=E8=BF=9B=E5=88=B6=20Ctrl+C=20=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E9=80=80=E5=87=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/plugins/shutdown.ts | 23 +++++++++++++++++++++++ vite.config.ts | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 src/server/plugins/shutdown.ts 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: {