From d5ad18ff4ea836531027fbb8dbfdb19736ed1f22 Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Fri, 30 Jan 2026 10:42:20 -0300 Subject: [PATCH] test: fix race condition Signed-off-by: Carlos Alexandro Becker --- internal/db/connect.go | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/internal/db/connect.go b/internal/db/connect.go index 20f0c3f31b1506e32ed9d53327d839ac7616bbc9..f98d9f9e61c26f3f339fb3d1789a68c8d0da5818 100644 --- a/internal/db/connect.go +++ b/internal/db/connect.go @@ -6,10 +6,13 @@ import ( "fmt" "log/slog" "path/filepath" + "sync" "github.com/pressly/goose/v3" ) +var gooseSetup sync.Once + // Connect opens a SQLite database connection and runs migrations. func Connect(ctx context.Context, dataDir string) (*sql.DB, error) { if dataDir == "" { @@ -27,11 +30,16 @@ func Connect(ctx context.Context, dataDir string) (*sql.DB, error) { return nil, fmt.Errorf("failed to connect to database: %w", err) } - goose.SetBaseFS(FS) - - if err := goose.SetDialect("sqlite3"); err != nil { - slog.Error("Failed to set dialect", "error", err) - return nil, fmt.Errorf("failed to set dialect: %w", err) + var gooseErr error + gooseSetup.Do(func() { + goose.SetBaseFS(FS) + if err := goose.SetDialect("sqlite3"); err != nil { + slog.Error("Failed to set dialect", "error", err) + gooseErr = fmt.Errorf("failed to set dialect: %w", err) + } + }) + if gooseErr != nil { + return nil, gooseErr } if err := goose.Up(db, "migrations"); err != nil {