cookiecutter-go-web-app/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/db/migration.go
AKP 5f7c2f42ec
Refactor for use with Cookiecutter
Signed-off-by: AKP <tom@tdpain.net>
2022-10-02 21:26:54 +01:00

42 lines
775 B
Go

package db
import (
"context"
_ "embed"
"github.com/pkg/errors"
"github.com/rs/zerolog/log"
"github.com/uptrace/bun/migrate"
"time"
"{{cookiecutter.__mainPackagePath}}/db/migrations"
)
func (db *DB) Migrate() error {
log.Info().Msg("running migrations")
migs, err := migrations.GetMigrations()
if err != nil {
return errors.WithStack(err)
}
mig := migrate.NewMigrator(db.bun, migs)
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()
if err := mig.Init(ctx); err != nil {
return errors.WithStack(err)
}
group, err := mig.Migrate(ctx)
if err != nil {
return errors.WithStack(err)
}
if group.IsZero() {
log.Info().Msg("database up to date")
} else {
log.Info().Msg("migrations applied")
}
return nil
}