Files
create-glstack/template/services/api/db/lib.go
Gregor Lohaus 8254a28baa init
2026-04-08 04:29:35 +02:00

61 lines
1.1 KiB
Go

package db
import (
"<@var(context.project.goprefix)>/<@var(context.project.name)>/config"
"github.com/amacneil/dbmate/v2/pkg/dbmate"
_ "github.com/amacneil/dbmate/v2/pkg/driver/postgres"
"log"
"net/url"
"strconv"
"strings"
)
var Q *Queries
func RunDbMigrations() error {
err := config.Load()
if err != nil {
return err
}
conf := *config.Conf
dbUrl, err := url.Parse(strings.Join([]string{
"postgresql://",
conf.Database.User,
":",
conf.Database.Password,
"@",
conf.Database.Host,
":",
strconv.Itoa(conf.Database.Port),
"/",
conf.Database.Name,
}, ""))
if err != nil {
return err
}
db := dbmate.New(dbUrl)
db.FS = MigrationsFs
db.MigrationsDir = []string{"migrations"}
migrations, err := db.FindMigrations()
if err != nil {
return err
}
for _, m := range migrations {
log.Default().Println(m.Version, m.FilePath)
}
db.AutoDumpSchema = false
log.Default().Println("\nApplying...")
err = db.CreateAndMigrate()
if err != nil {
log.Default().Println(err.Error())
}
err = db.DumpSchema()
if err != nil {
return err
}
return nil
}