feat(server): support SQLite via DB_TYPE env var
Build and Publish Server / build (push) Failing after 43s

This commit is contained in:
2026-08-10 17:28:45 +00:00
parent a29328f35b
commit 8b5bfe8385
2 changed files with 23 additions and 9 deletions
+21 -9
View File
@@ -5,6 +5,7 @@ import (
"log"
"gorm.io/driver/mysql"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"github.com/gouki/lunar-server/internal/model"
)
@@ -13,16 +14,27 @@ var DB *gorm.DB
// InitDB 初始化数据库连接
func InitDB(cfg *Config) error {
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
cfg.Database.User,
cfg.Database.Password,
cfg.Database.Host,
cfg.Database.Port,
cfg.Database.Name,
)
var err error
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
switch cfg.Database.Type {
case "sqlite", "sqlite3":
// DB_NAME 作为 SQLite 文件路径,例如 /app/data/lunar.db
dbPath := cfg.Database.Name
if dbPath == "" {
dbPath = "lunar.db"
}
DB, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{})
default:
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
cfg.Database.User,
cfg.Database.Password,
cfg.Database.Host,
cfg.Database.Port,
cfg.Database.Name,
)
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
}
if err != nil {
return fmt.Errorf("failed to connect database: %w", err)
}