58fa790b2b
Establishes the embed.FS and migrations/ layout up front. Migrate() returns ErrNotConfigured intentionally — the real goose runner lands in M2 alongside Postgres work, avoiding a toolchain bump to Go 1.24/1.25 through goose's transitive modernc.org/libc dependency chain.
34 lines
962 B
Go
34 lines
962 B
Go
package db
|
|
|
|
import (
|
|
"embed"
|
|
"errors"
|
|
)
|
|
|
|
//go:embed migrations/*.sql
|
|
var migrationsFS embed.FS
|
|
|
|
// MigrationsFS exposes the embedded migration files. The concrete migration
|
|
// runner (goose) will be wired in M2 when Postgres work begins; this package
|
|
// intentionally keeps the embed + a placeholder surface so the file layout
|
|
// and `go:embed` directive are established from day one.
|
|
func MigrationsFS() embed.FS {
|
|
return migrationsFS
|
|
}
|
|
|
|
// ErrNotConfigured is returned by Migrate until the real runner is wired.
|
|
var ErrNotConfigured = errors.New("db: migrations not yet configured (wired in M2)")
|
|
|
|
// Migrate is a placeholder. It validates that the embedded migrations load
|
|
// and then returns ErrNotConfigured so callers can detect the stub.
|
|
func Migrate() error {
|
|
entries, err := migrationsFS.ReadDir("migrations")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if len(entries) == 0 {
|
|
return errors.New("db: no migration files found")
|
|
}
|
|
return ErrNotConfigured
|
|
}
|