Skip to content

Commit a045d29

Browse files
author
Race Tester
committed
fix: embed sqlite migrations for container runtime
1 parent 7f5c695 commit a045d29

1 file changed

Lines changed: 19 additions & 8 deletions

File tree

internal/store/sqlite/sqlite.go

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package sqlite
22

33
import (
44
"database/sql"
5+
"embed"
56
"fmt"
67
"log/slog"
78
"os"
@@ -12,9 +13,14 @@ import (
1213

1314
"github.com/golang-migrate/migrate/v4"
1415
"github.com/golang-migrate/migrate/v4/database/sqlite"
16+
"github.com/golang-migrate/migrate/v4/source"
1517
"github.com/golang-migrate/migrate/v4/source/file"
18+
"github.com/golang-migrate/migrate/v4/source/iofs"
1619
)
1720

21+
//go:embed migrations/*.sql
22+
var embeddedMigrations embed.FS
23+
1824
// Store represents a SQLite-backed store
1925
type Store struct {
2026
db *sql.DB
@@ -95,15 +101,20 @@ func (s *Store) runMigrations() error {
95101

96102
// Use file:// source for migrations.
97103
migrationsDir, err := resolveMigrationsDir()
98-
if err != nil {
99-
return err
100-
}
101-
migrationsPath := "file://" + migrationsDir
104+
var src source.Driver
105+
if err == nil {
106+
migrationsPath := "file://" + migrationsDir
102107

103-
fileDriver := &file.File{}
104-
src, err := fileDriver.Open(migrationsPath)
105-
if err != nil {
106-
return fmt.Errorf("creating migration source: %w", err)
108+
fileDriver := &file.File{}
109+
src, err = fileDriver.Open(migrationsPath)
110+
if err != nil {
111+
return fmt.Errorf("creating migration source: %w", err)
112+
}
113+
} else {
114+
src, err = iofs.New(embeddedMigrations, "migrations")
115+
if err != nil {
116+
return fmt.Errorf("creating embedded migration source: %w", err)
117+
}
107118
}
108119

109120
m, err := migrate.NewWithInstance("file", src, "sqlite", driver)

0 commit comments

Comments
 (0)