Files

40 lines
850 B
Go

package postgres
import (
"database/sql"
"embed"
"errors"
"fmt"
"io/fs"
"github.com/golang-migrate/migrate/v4"
"github.com/golang-migrate/migrate/v4/database/postgres"
"github.com/golang-migrate/migrate/v4/source/iofs"
)
//go:embed migrations/*.sql
var migrationsFS embed.FS
func runMigrations(conn *sql.DB) error {
files, _ := fs.Sub(migrationsFS, "migrations")
sourceDriver, err := iofs.New(files, ".")
if err != nil {
return fmt.Errorf("create iofs driver: %w", err)
}
driver, err := postgres.WithInstance(conn, &postgres.Config{})
if err != nil {
return fmt.Errorf("create postgres driver: %w", err)
}
m, _ := migrate.NewWithInstance("iofs", sourceDriver, "postgres://", driver)
err = m.Up()
if err != nil && !errors.Is(err, migrate.ErrNoChange) {
return fmt.Errorf("run up migrations: %w", err)
}
return nil
}