/** * 持久层的公共类型与 schema 句柄(编码规范 §2:shared 只收无业务语义的基础件)。 * * 四个 schema、各自单写者(§7 / ADR-002): * sys 由各模块 adapter 经 Drizzle 单写;ledger 仅 ledger adapter(raw pg); * mastra 仅 Mastra;queue 仅 pg-boss。 * 连接池的创建与生命周期归 app 层,模块只拿到句柄。 */ import { pgSchema } from 'drizzle-orm/pg-core'; import type { NodePgDatabase } from 'drizzle-orm/node-postgres'; /** Drizzle 句柄 —— 模块 adapter 的入参类型 */ export type Db = NodePgDatabase>; /** 系统自持 schema —— 全仓一份句柄,各模块 adapter 在其上建表 */ export const sys = pgSchema('sys'); /** 台账 schema 名 —— ledger adapter 以 raw pg 动态 DDL,不经 Drizzle */ export const LEDGER_SCHEMA = 'ledger';