From d28fca8ee600ec7839710f70c253817a21cc3ad1 Mon Sep 17 00:00:00 2001 From: Sakurasan <26715255+Sakurasan@users.noreply.github.com> Date: Tue, 1 Sep 2026 21:36:15 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20sqlite=20=E9=BB=98=E8=AE=A4=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E6=96=87=E4=BB=B6=E8=B0=83=E6=95=B4=E4=B8=BA?= =?UTF-8?q?=20db/openteam.db=EF=BC=8C=E8=BF=90=E8=A1=8C=E6=97=B6=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E5=88=9B=E5=BB=BA=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/internal/store/db.go | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/backend/internal/store/db.go b/backend/internal/store/db.go index b0c6cbd..63a34ea 100644 --- a/backend/internal/store/db.go +++ b/backend/internal/store/db.go @@ -3,6 +3,8 @@ package store import ( "fmt" "log" + "os" + "path/filepath" "opencatd-open/pkg/config" _ "github.com/lib/pq" @@ -15,11 +17,17 @@ import ( var DB *gorm.DB func InitDB(cfg *config.Config) (*gorm.DB, error) { - var dialector gorm.Dialector + var ( + dialector gorm.Dialector + err error + ) switch cfg.DB_Type { case "sqlite": - dialector = sqliteDialector(cfg.DSN) + dialector, err = sqliteDialector(cfg.DSN) + if err != nil { + return nil, err + } case "postgres": dialector = postgresDialector(cfg.DSN) case "mysql": @@ -48,11 +56,17 @@ func InitDB(cfg *config.Config) (*gorm.DB, error) { return db, nil } -func sqliteDialector(dsn string) gorm.Dialector { +func sqliteDialector(dsn string) (gorm.Dialector, error) { if dsn == "" { - dsn = "opencatd.db" + dsn = "db/openteam.db" } - return gormlite.Open(dsn) + // sqlite 不会自动创建上级目录,先确保它存在(与 docker-compose 挂载的 /app/db 对应) + if dir := filepath.Dir(dsn); dir != "." && dir != string(filepath.Separator) { + if err := os.MkdirAll(dir, 0o755); err != nil { + return nil, fmt.Errorf("failed to create database directory %s: %w", dir, err) + } + } + return gormlite.Open(dsn), nil } func postgresDialector(dsn string) gorm.Dialector {