refactor: 重构数据库实例管理,支持按需创建与上下文注入
- 移除默认导出的 db 实例,改为按需创建数据库实例 - 使用数据库中间件提供上下文中的数据库实例,统一通过上下文获取数据库连接并执行操作。 - 添加数据库中间件以在请求上下文中注入数据库实例,支持服务器端全局缓存和无服务器环境下的每次新建实例。 - 导出中间件模块中的数据库相关功能。
This commit is contained in:
29
src/orpc/middlewares/db.ts
Normal file
29
src/orpc/middlewares/db.ts
Normal 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,
|
||||
},
|
||||
})
|
||||
})
|
||||
1
src/orpc/middlewares/index.ts
Normal file
1
src/orpc/middlewares/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from './db'
|
||||
Reference in New Issue
Block a user