数据库
数据库
NextDevTpl 使用 PostgreSQL 和 Drizzle ORM。生成器按所选模块组合 Schema 分组, 未选模块的表不会进入生成项目。
主要文件
| 路径 | 作用 |
|---|---|
src/db/schema/ | 按 auth、credits、subscription、support、mail 拆分的表结构 |
src/db/schema/index.ts | 当前生成项目选中的 Schema 出口 |
src/db/index.ts | 数据库 client |
drizzle.config.ts | Drizzle 配置 |
drizzle/ | 生成的迁移和 snapshot |
src/test/utils/db.ts | 测试数据库 helpers |
开发流程
新本地数据库:
pnpm db:push
需要评审和部署的 schema 变更:
pnpm db:generate
pnpm db:migrate
查看本地数据:
pnpm db:studio
push 和 migration 的区别
| 命令 | 使用场景 |
|---|---|
pnpm db:push | 本地初始化或快速迭代 |
pnpm db:generate | 修改了 src/db/schema/,需要生成迁移文件 |
pnpm db:migrate | 执行已提交的迁移 |
schema 修改 checklist
- 修改
src/db/schema/<分组>.ts,新模块使用独立分组。 - 更新读写该表的 feature service/action。
- 根据环境选择 push 或 migration。
- 在
src/test补测试。 - 运行
pnpm typecheck和相关测试。
常见表区域
| 区域 | 使用方 |
|---|---|
| 用户和 session | Better Auth |
| 积分和交易 | Credits ledger 和购买流程 |
| 订阅 | 支付和套餐查询 |
| 工单 | 用户工单和后台处理 |
| Newsletter | 邮件订阅与退订 |