Files
backend/internal/store/migrate.go
Andriy Oblivantsev 6c26135cad
CI / test (push) Successful in 4s
Update
2026-03-02 21:21:21 +00:00

40 lines
640 B
Go

package store
import (
"database/sql"
"embed"
"io/fs"
"log"
"sort"
_ "github.com/jackc/pgx/v5/stdlib"
)
//go:embed migrations
var migrationsFS embed.FS
func Migrate(databaseURL string) error {
db, err := sql.Open("pgx", databaseURL)
if err != nil {
return err
}
defer db.Close()
entries, err := fs.Glob(migrationsFS, "migrations/*.sql")
if err != nil {
return err
}
sort.Strings(entries)
for _, name := range entries {
sql, err := migrationsFS.ReadFile(name)
if err != nil {
return err
}
if _, err := db.Exec(string(sql)); err != nil {
return err
}
}
log.Printf("migrations applied")
return nil
}