Files
golibs/datastores/sql/postgres/migrate.go
Jacob Bohanon aceea44c90 Extract generic migration logic into datastores/sql/migrate package
Move database-agnostic migration logic (file discovery, version tracking,
bootstrap detection) into a shared migrate package behind a Dialect
interface, leaving postgres as a thin wrapper.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 20:10:11 -05:00

27 lines
609 B
Go

package postgres
import (
"context"
"database/sql"
"fmt"
_ "github.com/jackc/pgx/v5/stdlib" // Register pgx driver for database/sql
"git.nonahob.net/jacob/golibs/datastores/sql/migrate"
)
// Migrate runs forward (up) migrations using the config's DSN.
func (c *Config) Migrate(opts *migrate.Options) error {
db, err := sql.Open("pgx", c.DSN())
if err != nil {
return fmt.Errorf("failed to open database: %w", err)
}
defer db.Close()
if err := db.Ping(); err != nil {
return fmt.Errorf("failed to ping database: %w", err)
}
return migrate.Run(context.Background(), db, Dialect{}, opts)
}