用途:规范数据库架构与迁移变更流程,适用于修改 tools/atlas/ 中的数据库 schema,或修改 tools/sqlc/ 中的 SQLC 查询时。
前置条件:分支、提交与 PR 使用 git-workflow 技能;HCL schema 规则见 .claude/rules/hcl.md(SSOT);SQL 查询规则见 .claude/rules/sql.md(SSOT)。
适用文件:tools/atlas/schemas/{db_dialect}/.hcl 为 HCL schema 定义(真实来源),tools/sqlc/queries/{db_dialect}/.sql 为 SQLC 查询定义。方言目录包括 tools/atlas/schemas/postgres/.hcl 与 tools/atlas/schemas/mysql/.hcl。
工作流:1)在 tools/atlas/schemas/{db_dialect}/ 编辑 HCL 文件;2)按 hcl.md 规则验证,运行 make atlas-fmt && make atlas-lint;3)修改 HCL 后重新生成全部产物,分别运行 make regenerate-all-from-atlas(PostgreSQL)、make regenerate-all-from-atlas-mysql(MySQL)、make regenerate-all-from-atlas-sqlite(PostgreSQL schema 转 SQLite 并生成 Go 代码)。每个目标依次执行:Atlas 迁移 → Docker 数据库重置 → SQLC schema 提取 → SQLC 代码生成。4)验证迁移文件:每种数据库方言应只有一个迁移 SQL 文件,路径为 tools/atlas/migrations/postgres/{db-name}/.sql 与 tools/atlas/migrations/mysql/{db-name}/.sql,DB 名称为 keygen、sign、watch。5)验证 Go 代码,运行 make check-build && make go-test。
自检清单:HCL 格式与 lint 通过;三个 regenerate 目标均成功;每个迁移目录只有一个更新的 .sql 文件;SQLC 正常生成;Go 构建通过。
相关:.claude/rules/hcl.md、.claude/rules/sql.md、go-development(SQLC 生成后的 Go 验证)、git-workflow。
限制:资料未提供支持的数据库版本、迁移失败回滚方式及团队协作约定,暂未提供。