29 lines
574 B
Go
29 lines
574 B
Go
package store
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"embed"
|
|
|
|
_ "github.com/jackc/pgx/v5/stdlib" // pgx database/sql driver
|
|
"github.com/pressly/goose/v3"
|
|
)
|
|
|
|
//go:embed migrations/*.sql
|
|
var migrationsFS embed.FS
|
|
|
|
// Migrate applies all pending goose migrations to the database at dsn.
|
|
func Migrate(ctx context.Context, dsn string) error {
|
|
db, err := sql.Open("pgx", dsn)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer db.Close()
|
|
|
|
goose.SetBaseFS(migrationsFS)
|
|
if err := goose.SetDialect("postgres"); err != nil {
|
|
return err
|
|
}
|
|
return goose.UpContext(ctx, db, "migrations")
|
|
}
|