diff --git a/backend/plugins/infra/database/postgres.go b/backend/plugins/infra/database/postgres.go index 0e0c9158..c6e689b2 100644 --- a/backend/plugins/infra/database/postgres.go +++ b/backend/plugins/infra/database/postgres.go @@ -5,10 +5,14 @@ package database import ( "context" + "fmt" "log" "net" "net/url" + "os" + "path/filepath" "strconv" + "strings" "time" "github.com/glebarez/sqlite" @@ -40,6 +44,14 @@ func initSQLite() (*gorm.DB, error) { sqlitePath = "./data/wavelet.db" } + if sqlitePath != ":memory:" && !strings.HasPrefix(sqlitePath, "file:") { + if dir := filepath.Dir(sqlitePath); dir != "" && dir != "." { + if err := os.MkdirAll(dir, 0755); err != nil { + return nil, fmt.Errorf("create sqlite directory %q failed: %w", dir, err) + } + } + } + targetDB, err := gorm.Open(sqlite.Open(sqlitePath), &gorm.Config{ DisableForeignKeyConstraintWhenMigrating: true, Logger: &gormZapLogger{