用途:这是 AdonisJS 起始套件中关于 Lucid 数据库迁移的约定说明,用于指导如何创建、修改和运行迁移。
主要能力与约定:迁移文件位于 app/<mod>/database/migrations/<unix-ms-timestamp>_<name>.ts,继承 BaseSchema,包含 up() 与 down()。up() 用 this.schema.createTable(...) 建表,id 主键在前,业务列居中,created_at(非空)与 updated_at(可空)置底,并声明索引;down() 用 this.schema.dropTable(this.tableName) 删表。
核心规则:套件假设无生产数据,给已有表加列时直接编辑现有 create_<table>_table.ts 并运行 pnpm ace migration:fresh,而不是叠加 alter_table 迁移,使下游项目每表只有一个干净迁移。迁移路径需在 apps/web/config/database.ts 的 connections.postgres.migrations.paths 中按模块显式注册,无自动加载。apps/web/app/core/database/schema.ts 自动生成但需提交,模型从中导入 schema,迁移后需一并提交其 diff,且不可手改或 lint。
使用方式:新增表按模板创建迁移文件,首次迁移需追加模块路径,然后运行 pnpm ace migration:run(增量)或 pnpm ace migration:fresh(重建)。查看状态用 pnpm ace migration:status。
限制:migration:fresh 会删除所有表并重跑全部迁移,绝不可用于共享或生产数据库;一旦有真实数据,应改用标准策略,不再编辑已发布迁移、不再 fresh,而是新增 alter_table 迁移并运行 migration:run。Postgres 类型建议 text、jsonb(非 json)、timestamp;查找列(user_id、tenant_id、notifiable_id)应加索引;跨模块外键归属表所有者,归属不清时改用本模块的连接表。
资料未提供收费、价格、平台支持范围等信息。