Embed migrations

This commit is contained in:
2025-08-14 15:01:57 +03:00
parent 7b4a1462e6
commit 946a1ea151
3 changed files with 38 additions and 36 deletions

13
main.go
View File

@@ -3,6 +3,7 @@ package main
import (
"context"
"database/sql"
"embed"
"flag"
"fmt"
"log/slog"
@@ -32,6 +33,9 @@ import (
sloggin "github.com/samber/slog-gin"
)
//go:embed migrations/*.sql
var migrationsFS embed.FS
const (
ServerShutdownTimeout = 5
ForceShutdownTimeout = 20
@@ -84,7 +88,7 @@ func main() {
gq := goqu.New("sqlite3", db)
// Запускаем миграции
if err := RunMigrations(db, "migrations", logger); err != nil {
if err := RunMigrations(db, logger); err != nil {
logger.Error("Failed to run migrations", "error", err)
os.Exit(1)
}
@@ -269,12 +273,15 @@ func main() {
logger.Info("Transcriber service stopped")
}
func RunMigrations(db *sql.DB, migrationsDir string, logger *slog.Logger) error {
func RunMigrations(db *sql.DB, logger *slog.Logger) error {
if err := goose.SetDialect("sqlite3"); err != nil {
return fmt.Errorf("failed to set goose dialect: %w", err)
}
if err := goose.Up(db, migrationsDir); err != nil {
// Use the embedded filesystem for migrations
goose.SetBaseFS(migrationsFS)
if err := goose.Up(db, "migrations"); err != nil {
return fmt.Errorf("failed to run migrations: %w", err)
}