diff --git a/.dockerignore b/.dockerignore index 0024054..d060ed9 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,7 @@ * !backend/infrastructure/ !backend/internal/ +!backend/db/ !backend/go.mod !backend/go.sum !backend/main.go diff --git a/backend/main.go b/backend/main.go index 99e6423..a55a3bf 100644 --- a/backend/main.go +++ b/backend/main.go @@ -1,16 +1,21 @@ package main import ( + _ "embed" + "fmt" "log" "net/http" "strings" + "github.com/ras0q/goalie" "github.com/renkonmaster/donguri/infrastructure/config" "github.com/renkonmaster/donguri/infrastructure/database" "github.com/renkonmaster/donguri/infrastructure/injector" - "github.com/ras0q/goalie" ) +//go:embed db/init.sql/01_schema.sql +var schemaSQL string + // flushingResponseWriter は Write のたびに Flush を呼ぶ ResponseWriter ラッパーです。 // ogen の SSE エンコーダーが io.Copy を使うため Flush が呼ばれず // クライアントにイベントが届かない問題を回避します。 @@ -58,6 +63,15 @@ func run() (err error) { if err != nil { return err } + + // --------------------- + // 自動初期化スキームの実行 + // --------------------- + if err := db.Exec(schemaSQL).Error; err != nil { + return fmt.Errorf("failed to execute schema.sql: %w", err) + } + // --------------------- + sqlDB, err := db.DB() if err != nil { return err