From d30dd3f90ffd7dad782702bed86ce8ca39311b86 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Mon, 8 Jun 2026 15:42:08 +0000 Subject: [PATCH] fix: database is closed --- internal/app/app.go | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/internal/app/app.go b/internal/app/app.go index 3ec98b3..bea5b3c 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -96,6 +96,11 @@ func Run(ctx context.Context, opts Options) error { return errors.New("-halt requires DB_DSN") } + if cfg.DB.MigrationsAutoApply { + if err := applyMigrations(ctx, cfg); err != nil { + return err + } + } db, err := openDB(ctx, cfg) if err != nil { return err @@ -103,11 +108,6 @@ func Run(ctx context.Context, opts Options) error { defer func() { _ = db.Close() }() - if cfg.DB.MigrationsAutoApply { - if err := mysqlrepo.ApplyMigrations(ctx, db.DB); err != nil { - return err - } - } repo := mysqlrepo.NewRepository(db) if opts.Halt { if strings.TrimSpace(opts.Reason) == "" { @@ -351,6 +351,17 @@ func minPositive(a, b int) int { } } +func applyMigrations(ctx context.Context, cfg config.Config) error { + db, err := openDB(ctx, cfg) + if err != nil { + return err + } + defer func() { + _ = db.Close() + }() + return mysqlrepo.ApplyMigrations(ctx, db.DB) +} + func openDB(ctx context.Context, cfg config.Config) (*sqlx.DB, error) { db, err := sqlx.Open("mysql", cfg.DB.DSN) if err != nil {