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
+2
View File
@@ -20,6 +20,7 @@ type ServerConfig struct {
} }
type DatabaseConfig struct { type DatabaseConfig struct {
Type string
Host string Host string
Port string Port string
User string User string
@@ -59,6 +60,7 @@ func Load() *Config {
CORSOrigins: getEnv("CORS_ORIGINS", ""), CORSOrigins: getEnv("CORS_ORIGINS", ""),
}, },
Database: DatabaseConfig{ Database: DatabaseConfig{
Type: getEnv("DB_TYPE", "mysql"),
Host: getEnv("DB_HOST", "localhost"), Host: getEnv("DB_HOST", "localhost"),
Port: getEnv("DB_PORT", "3306"), Port: getEnv("DB_PORT", "3306"),
User: getEnv("DB_USER", "root"), User: getEnv("DB_USER", "root"),
+21 -9
View File
@@ -5,6 +5,7 @@ import (
"log" "log"
"gorm.io/driver/mysql" "gorm.io/driver/mysql"
"gorm.io/driver/sqlite"
"gorm.io/gorm" "gorm.io/gorm"
"github.com/gouki/lunar-server/internal/model" "github.com/gouki/lunar-server/internal/model"
) )
@@ -13,16 +14,27 @@ var DB *gorm.DB
// InitDB 初始化数据库连接 // InitDB 初始化数据库连接
func InitDB(cfg *Config) error { 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 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 { if err != nil {
return fmt.Errorf("failed to connect database: %w", err) return fmt.Errorf("failed to connect database: %w", err)
} }