29 lines
845 B
Go
29 lines
845 B
Go
// Package migrations 通过 goose 执行采购服务的版本化数据库迁移。
|
|
package migrations
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
|
|
"github.com/pressly/goose/v3"
|
|
)
|
|
|
|
// Run 执行指定的 goose 命令。迁移目录由调用方显式传入,避免把运行目录当作隐式配置。
|
|
func Run(ctx context.Context, database *sql.DB, directory, command string) error {
|
|
if err := goose.SetDialect("sqlite3"); err != nil {
|
|
return err
|
|
}
|
|
|
|
return goose.RunContext(ctx, command, database, directory)
|
|
}
|
|
|
|
// Up 将数据库迁移到当前版本。
|
|
func Up(ctx context.Context, database *sql.DB, directory string) error {
|
|
return Run(ctx, database, directory, "up")
|
|
}
|
|
|
|
// Down 回退一个已应用的迁移版本。
|
|
func Down(ctx context.Context, database *sql.DB, directory string) error {
|
|
return Run(ctx, database, directory, "down")
|
|
}
|