package migrations import ( "database/sql" "embed" "errors" "github.com/golang-migrate/migrate/v4" msqlite3 "github.com/golang-migrate/migrate/v4/database/sqlite3" _ "github.com/golang-migrate/migrate/v4/source/file" "github.com/golang-migrate/migrate/v4/source/iofs" ) //go:embed sql/*.sql var migrationsFS embed.FS func Run(db *sql.DB) error { driver, err := msqlite3.WithInstance(db, &msqlite3.Config{}) if err != nil { return err } d, err := iofs.New(migrationsFS, "sql") if err != nil { return err } m, err := migrate.NewWithInstance("iofs", d, "sqlite", driver) if err != nil { return err } if err = m.Up(); err != nil && !errors.Is(migrate.ErrNoChange, err) { return err } return nil }