用途:为使用 pressly/goose 创建和运行数据库迁移提供专家指导,可通过 CLI 或 Go 库执行。
触发场景:用户提到 goose、pressly/goose、Go 数据库迁移,或询问如何运行 SQL/Go 迁移;任务涉及嵌入式迁移、Provider API 使用或 goose 的 CI 工作流。
核心规则:优先遵循仓库已有的迁移布局、方言和命名约定;确保数据库驱动与 goose 方言匹配(如 postgres 驱动配 postgres 方言);模式变更优先用 SQL 迁移,复杂数据回填或代码驱动步骤用 Go 迁移;迁移需在 goose 规则内保持确定性和幂等(一个 Up,可选 Down)。
工作流:先明确上下文(目标数据库/方言、驱动、迁移目录、SQL 还是 Go 迁移、所需命令如 create/up/down/status);再选择接口,临时运行或 CI/CD 用 CLI,在 Go 服务或测试内执行用库/Provider;然后编写迁移,SQL 使用 goose 注解和语句规则,Go 在 init 中注册迁移并接入自定义二进制或 Provider;最后运行迁移,CLI 用法、命令和环境变量见 references/cli.md,库/Provider 模式见 references/library.md;版本与排序方面,开发期可用混合版本,生产排序需要时固定(见 references/versioning.md)。
输出期望:提供与用户方言和环境匹配的准确命令或代码片段;需要回滚时提醒缺少 Down 迁移;若迁移需要特殊解析或非事务执行,明确说明。
限制:资料未提供具体命令示例、环境变量清单、Provider API 细节及版本控制实现,相关内容暂未提供。