package store import ( "context" "database/sql" "embed" "fmt" _ "github.com/jackc/pgx/v5/stdlib" "github.com/pressly/goose/v3" ) //go:embed migrations/*.sql var migrationsFS embed.FS func Migrate(ctx context.Context, connStr string) error { db, err := sql.Open("pgx", connStr) if err != nil { return fmt.Errorf("cannot open migration connection: %w", err) } defer db.Close() goose.SetBaseFS(migrationsFS) if err := goose.SetDialect("postgres"); err != nil { return fmt.Errorf("cannot set dialect: %w", err) } if err := goose.Up(db, "migrations"); err != nil { return fmt.Errorf("cannot run migrations: %w", err) } return nil }