refactor: 重构数据库实例管理,支持按需创建与上下文注入

- 移除默认导出的 db 实例,改为按需创建数据库实例
- 使用数据库中间件提供上下文中的数据库实例,统一通过上下文获取数据库连接并执行操作。
- 添加数据库中间件以在请求上下文中注入数据库实例,支持服务器端全局缓存和无服务器环境下的每次新建实例。
- 导出中间件模块中的数据库相关功能。
This commit is contained in:
2026-01-18 03:03:28 +08:00
parent daaa220a47
commit f38867c548
4 changed files with 44 additions and 12 deletions

View File

@@ -0,0 +1,29 @@
import { os } from '@orpc/server'
import { createDb } from '@/db'
const IS_SERVERLESS = false // TODO: 这里需要优化
let globalDb: ReturnType<typeof createDb> | null = null
function getDb() {
if (IS_SERVERLESS) {
return createDb()
}
if (!globalDb) {
globalDb = createDb()
}
return globalDb
}
export const dbProvider = os.middleware(async ({ context, next }) => {
const db = getDb()
return next({
context: {
...context,
db,
},
})
})