package postgres import ( "database/sql" "embed" "fmt" _ "github.com/jackc/pgx/v4/stdlib" // needed for pg connection "github.com/pressly/goose/v3" ) //go:embed schema/*.sql var migrations embed.FS type Database struct { *Queries *sql.DB } // Connect to a database func Connect(typ string, connString string) (*Database, error) { conn, err := sql.Open(typ, connString) if err != nil { return nil, fmt.Errorf("open connection: %w", err) } goose.SetBaseFS(migrations) if err = goose.Up(conn, "schema"); err != nil { return nil, fmt.Errorf("migrate: %w", err) } return &Database{ New(conn), conn, }, nil }