Files
member-console/internal/db/migrations.go

57 lines
984 B
Go

package db
import (
"database/sql"
"embed"
"github.com/pressly/goose/v3"
)
//go:embed migrations/*.sql
var embedMigrations embed.FS
// RunMigrations runs all pending migrations
func RunMigrations(db *sql.DB) error {
goose.SetBaseFS(embedMigrations)
if err := goose.SetDialect("sqlite3"); err != nil {
return err
}
if err := goose.Up(db, "migrations"); err != nil {
return err
}
return nil
}
// RollbackMigration rolls back the last migration
func RollbackMigration(db *sql.DB) error {
goose.SetBaseFS(embedMigrations)
if err := goose.SetDialect("sqlite3"); err != nil {
return err
}
if err := goose.Down(db, "migrations"); err != nil {
return err
}
return nil
}
// MigrationStatus shows the status of all migrations
func MigrationStatus(db *sql.DB) error {
goose.SetBaseFS(embedMigrations)
if err := goose.SetDialect("sqlite3"); err != nil {
return err
}
if err := goose.Status(db, "migrations"); err != nil {
return err
}
return nil
}