Compare commits
2 Commits
c20cf02d9f
...
1af5d4e3c0
| Author | SHA1 | Date | |
|---|---|---|---|
| 1af5d4e3c0 | |||
| 6795730485 |
+11
-6
@@ -10,11 +10,16 @@ export const createDB = () =>
|
||||
|
||||
export type DB = ReturnType<typeof createDB>
|
||||
|
||||
export const getDB = (() => {
|
||||
let db: DB | null = null
|
||||
let _db: DB | null = null
|
||||
|
||||
return (): DB => {
|
||||
db ??= createDB()
|
||||
return db
|
||||
export const getDB = (): DB => {
|
||||
_db ??= createDB()
|
||||
return _db
|
||||
}
|
||||
|
||||
export const closeDB = async () => {
|
||||
if (_db) {
|
||||
await _db.$client.end()
|
||||
_db = null
|
||||
}
|
||||
})()
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
+1
-1
@@ -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: {
|
||||
|
||||
Reference in New Issue
Block a user