fix(db): ensure sqlite data directory exists before opening database

This commit is contained in:
ryan
2026-08-28 15:42:24 +08:00
parent 692b4b4851
commit 3df621637f
@@ -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{