mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-11 17:56:37 +08:00
fix(db): ensure sqlite data directory exists before opening database
This commit is contained in:
@@ -5,10 +5,14 @@ package database
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"net"
|
"net"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/glebarez/sqlite"
|
"github.com/glebarez/sqlite"
|
||||||
@@ -40,6 +44,14 @@ func initSQLite() (*gorm.DB, error) {
|
|||||||
sqlitePath = "./data/wavelet.db"
|
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{
|
targetDB, err := gorm.Open(sqlite.Open(sqlitePath), &gorm.Config{
|
||||||
DisableForeignKeyConstraintWhenMigrating: true,
|
DisableForeignKeyConstraintWhenMigrating: true,
|
||||||
Logger: &gormZapLogger{
|
Logger: &gormZapLogger{
|
||||||
|
|||||||
Reference in New Issue
Block a user