refactor(db): 去掉 lazy singleton,改为模块级 const db

getDB/closeDB + 可空单例是 Cloudflare Workers 场景的模式——每个请求独
立上下文、不允许模块加载期副作用。在 Bun 单进程长驻服务下这些都是冗余
的仪式,徒增心智。

改为模块级 const db:
- src/server/db/index.ts 直接 export drizzle(...) 实例
- shutdown 插件用 db.$client.end() 收尾
- db.middleware.ts 跟随内部重命名以避免同名遮蔽(本身的去留放到下一
  次提交)
This commit is contained in:
2026-04-24 20:36:16 +08:00
parent f6b6edee23
commit d15b22ad1b
3 changed files with 13 additions and 29 deletions
+5 -20
View File
@@ -2,24 +2,9 @@ import { drizzle } from 'drizzle-orm/postgres-js'
import { env } from '@/env'
import * as schema from '@/server/db/schema'
export const createDB = () =>
drizzle({
connection: env.DATABASE_URL,
schema,
})
export const db = drizzle({
connection: env.DATABASE_URL,
schema,
})
export type DB = ReturnType<typeof createDB>
let _db: DB | null = null
export const getDB = (): DB => {
_db ??= createDB()
return _db
}
export const closeDB = async () => {
if (_db) {
await _db.$client.end()
_db = null
}
}
export type DB = typeof db