Files
openbridge-token-usage-viewer/src/orpc/middlewares/db.ts
MAO Dongyang b967deb4b1 feat: 迁移数据库至 SQLite 并新增项目文档
- 将 Postgres 数据库替换为 SQLite
- 并同步添加 README 文档以优化项目初始化流程
2026-01-20 16:56:11 +08:00

49 lines
988 B
TypeScript

/**
* 数据库中间件
*
* 为 ORPC 处理器提供数据库连接。使用单例模式管理连接,
* 避免每次请求都创建新连接。
*/
import { os } from '@orpc/server'
import { createDb, type Db } from '@/db'
/** 全局数据库实例 (单例模式) */
let globalDb: Db | null = null
/**
* 获取数据库实例
*
* 首次调用时创建连接,后续调用返回同一实例。
* 这种模式适合长时间运行的服务器进程。
*/
function getDb(): Db {
if (!globalDb) {
globalDb = createDb()
}
return globalDb
}
/**
* 数据库提供者中间件
*
* 使用方式:
* ```ts
* export const list = os.todo.list
* .use(dbProvider)
* .handler(async ({ context }) => {
* // context.db 可用
* return context.db.query.todoTable.findMany()
* })
* ```
*/
export const dbProvider = os.middleware(async ({ context, next }) => {
const db = getDb()
return next({
context: {
...context,
db,
},
})
})