数据库迁移

迁移文件

迁移分两类:

类型目录说明
核心迁移libs/api-core/src/shared/migrations/系统表(用户、组织、计费等)
业务迁移api/src/migrations/你的业务表

创建迁移

api/src/migrations/ 下创建 SQL 文件,以日期命名:

-- api/src/migrations/20260416.sql
CREATE TABLE IF NOT EXISTS todos (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  tenant_id UUID NOT NULL,
  title VARCHAR(255) NOT NULL,
  completed BOOLEAN DEFAULT false,
  created_at BIGINT DEFAULT EXTRACT(EPOCH FROM NOW())::BIGINT,
  updated_at BIGINT DEFAULT EXTRACT(EPOCH FROM NOW())::BIGINT
);

执行迁移

npm run migrate

工作原理

迁移脚本(libs/api-core/src/shared/scripts/migrate.ts):

  1. 创建 migrations 表(记录已执行的迁移)
  2. 按文件名排序读取所有 .sql 文件
  3. 跳过已执行的,执行新的
  4. 先执行核心迁移,再执行业务迁移
[core] Executed: 20251001.sql
[core] Skipped: 20260411.sql(已执行过)
[user] Executed: 20260416.sql

编写规范