Added migration mgmt with goose.

This commit is contained in:
2025-06-04 02:36:09 -05:00
parent 9e59d05efe
commit fa5be206cb
13 changed files with 297 additions and 66 deletions

56
internal/db/migrations.go Normal file
View File

@ -0,0 +1,56 @@
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
}