- 移除默认导出的 db 实例,改为按需创建数据库实例 - 使用数据库中间件提供上下文中的数据库实例,统一通过上下文获取数据库连接并执行操作。 - 添加数据库中间件以在请求上下文中注入数据库实例,支持服务器端全局缓存和无服务器环境下的每次新建实例。 - 导出中间件模块中的数据库相关功能。
30 lines
488 B
TypeScript
30 lines
488 B
TypeScript
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,
|
|
},
|
|
})
|
|
})
|