# AGENTS.md — @app/models ## 职责 **Drizzle ORM 表定义**(数据库 schema 的唯一源)。只描述表结构与行类型,不含连接、查询逻辑或迁移脚本。 ## 结构 ``` src/ users.ts # users sqliteTable + User / NewUser sessions.ts # sessions password-resets.ts # passwordResets index.ts # 重导出全部表与行类型 ``` ## 约定 - 表用 `sqliteTable`(Turso/libSQL)。主键默认 `text` + `crypto.randomUUID()`。 - 时间戳用 `integer(..., { mode: "timestamp" })`,默认 `unixepoch()`。 - 同步导出 `$inferSelect` / `$inferInsert` 类型(如 `User`、`NewUser`)。 ## 修改指南 - **加表/改列**:改这里 → `yarn workspace @app/db db:generate`(或 `db:push`)→ 更新 `@app/dao` 对应 dao。 - 查询写在 `@app/dao`,不在本包写 `db.select`。 - 不要引入 `@libsql/client` 或环境变量;本包保持纯 schema。 - 重命名/删除列是破坏性变更:先确认无 dao/service/API 依赖,再生成迁移。 ## 命令 ```bash yarn workspace @app/models typecheck yarn workspace @app/models build # schema 变更后的迁移在 @app/db: yarn db:generate yarn db:push ```