@@ -3,6 +3,7 @@ package db
33import (
44 "context"
55 "database/sql"
6+ "embed"
67 "fmt"
78 "log/slog"
89 "path/filepath"
@@ -21,6 +22,18 @@ var pragmas = map[string]string{
2122 "busy_timeout": "30000",
2223}
2324
25+//go:embed migrations/*.sql
26+var FS embed.FS
27+
28+func init() {
29+ goose.SetBaseFS(FS)
30+
31+ if testing.Testing() {
32+ goose.SetLogger(goose.NopLogger())
33+ }
34+
35+}
36+
2437// Connect opens a SQLite database connection and runs migrations.
2538func Connect(ctx context.Context, dataDir string) (*sql.DB, error) {
2639 if dataDir == "" {
@@ -38,12 +51,6 @@ func Connect(ctx context.Context, dataDir string) (*sql.DB, error) {
3851 return nil, fmt.Errorf("failed to connect to database: %w", err)
3952 }
4053
41− goose.SetBaseFS(FS)
42−
43− if testing.Testing() {
44− goose.SetLogger(goose.NopLogger())
45− }
46−
4754 if err := goose.SetDialect("sqlite3"); err != nil {
4855 slog.Error("Failed to set dialect", "error", err)
4956 return nil, fmt.Errorf("failed to set dialect: %w", err)