Embed migrations
This commit is contained in:
13
main.go
13
main.go
@@ -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)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user