test: run migration setup once to avoid race condition

Andrey Nering created

Change summary

internal/db/connect.go | 19 +++++++++++++------
internal/db/embed.go   |  6 ------
2 files changed, 13 insertions(+), 12 deletions(-)

Detailed changes

internal/db/connect.go 🔗

@@ -3,6 +3,7 @@ package db
 import (
 	"context"
 	"database/sql"
+	"embed"
 	"fmt"
 	"log/slog"
 	"path/filepath"
@@ -21,6 +22,18 @@ var pragmas = map[string]string{
 	"busy_timeout":  "30000",
 }
 
+//go:embed migrations/*.sql
+var FS embed.FS
+
+func init() {
+	goose.SetBaseFS(FS)
+
+	if testing.Testing() {
+		goose.SetLogger(goose.NopLogger())
+	}
+
+}
+
 // Connect opens a SQLite database connection and runs migrations.
 func Connect(ctx context.Context, dataDir string) (*sql.DB, error) {
 	if dataDir == "" {
@@ -38,12 +51,6 @@ 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 testing.Testing() {
-		goose.SetLogger(goose.NopLogger())
-	}
-
 	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)

internal/db/embed.go 🔗

@@ -1,6 +0,0 @@
-package db
-
-import "embed"
-
-//go:embed migrations/*.sql
-var FS embed.FS