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 string
Host string
Port string
User string
@@ -59,6 +60,7 @@ func Load() *Config {
CORSOrigins: getEnv("CORS_ORIGINS", ""),
},
Database: DatabaseConfig{
Type: getEnv("DB_TYPE", "mysql"),
Host: getEnv("DB_HOST", "localhost"),
Port: getEnv("DB_PORT", "3306"),
User: getEnv("DB_USER", "root"),
+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)
}