2025-04-17 20:30:21 -04:00

46 lines
731 B
Go

package database
import (
"embed"
"io"
"log"
"net/url"
"github.com/amacneil/dbmate/v2/pkg/dbmate"
_ "github.com/spotdemo4/dbmate-sqlite-modernc/pkg/driver/sqlite" // Modernc sqlite
)
func Migrate(dsn string, dbFS embed.FS) error {
_, err := dbFS.ReadDir(".")
if err == io.EOF {
return nil
}
dburl, err := url.Parse(dsn)
if err != nil {
return err
}
db := dbmate.New(dburl)
db.Driver()
db.FS = dbFS
db.AutoDumpSchema = false
log.Println("Migrations:")
migrations, err := db.FindMigrations()
if err != nil {
return err
}
for _, m := range migrations {
log.Println(m.Version, m.FilePath)
}
log.Println("\nApplying...")
err = db.CreateAndMigrate()
if err != nil {
return err
}
return nil
}