feat(server): support SQLite via DB_TYPE env var
Build and Publish Server / build (push) Failing after 43s
Build and Publish Server / build (push) Failing after 43s
This commit is contained in:
@@ -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"),
|
||||
|
||||
@@ -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,6 +14,17 @@ var DB *gorm.DB
|
||||
|
||||
// InitDB 初始化数据库连接
|
||||
func InitDB(cfg *Config) error {
|
||||
var err error
|
||||
|
||||
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,
|
||||
@@ -20,9 +32,9 @@ func InitDB(cfg *Config) error {
|
||||
cfg.Database.Port,
|
||||
cfg.Database.Name,
|
||||
)
|
||||
|
||||
var err error
|
||||
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to connect database: %w", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user