SuperAPI AI 工具集

database-migrations

编程与开发

查看项目

更新于 10-16 01:08

技能介绍

用途:为 PostgreSQL 编写、校验、构建并运行 Kysely 迁移,通过 @schemavaults/dbh 提供的 dbh CLI 完成。迁移文件为编号模块,每个文件导出 up() 与 down() 函数;TypeScript 源码先构建为 JavaScript,再由 CLI 应用。

准备:迁移通过 @/sql 别名导入 sql 标签,而非直接从包导入。需在源码树创建如 ./src/db/sql.ts,重导出包中的 sql 标签,并在 tsconfig.json 的 compilerOptions.paths 配置 @/sql 别名,再建立迁移目录如 ./src/db/migrations/。

迁移文件规则:目录非空;文件名以 5 位数字前缀加简短 kebab-case 描述命名,数字决定应用顺序;每个模块导出 up(db) 与 down(db),down 必须精确可回滚;迁移编号唯一,分支碰撞需重新编号;up 与 down 接收 Kysely<any> 并返回 Promise。可用 Kysely 查询构建器或 sql 模板标签编写,插值须使用 ${...} 由标签参数化。

校验:bunx @schemavaults/dbh validate-migration-directory ./src/db/migrations,检查四项规则并以 [ERROR]/[WARN] 报告问题,支持 --duplicates-as-warnings 与 --tsconfig <path>。

构建:bunx @schemavaults/dbh build-db-migrations ./src/db/migrations --outdir ./dist/migrations --sql-module ./src/db/sql.ts --sql-outdir ./dist。需 Bun 在 PATH,默认保留 @schemavaults/dbh、kysely 为外部依赖。

运行:用 npx(Node.js,因多数 PostgreSQL 驱动面向 Node)执行 migrate 应用、reverse 回滚,需 --environment 与凭据环境变量。如 npx @schemavaults/dbh migrate ./dist/migrations --environment production --env-file ./.env.production。可选 --ws-proxy-url。结果逐行显示 [Up|Down] 名称与状态。

程序化 API:从 @schemavaults/dbh/migrate 导入 migrate、reverse,传入 adapter.db 与 migrationFolder 等。

环境变量:POSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_URL、POSTGRES_HOST、POSTGRES_PORT、POSTGRES_DATABASE,可选 POSTGRES_URL_NON_POOLING;SCHEMAVAULTS_DBH_DEBUG=true 可开启调试日志。未在资料中说明的限制暂未提供。