Files
SingBox-Gopanel/internal/database/db.go
CN-JS-HuiBai 97f0672729
Some checks failed
build / build (api, amd64, linux) (push) Failing after -50s
build / build (api, arm64, linux) (push) Failing after -51s
build / build (api.exe, amd64, windows) (push) Failing after -51s
修复订阅无法正常获取的错误
2026-04-17 23:07:47 +08:00

62 lines
1.3 KiB
Go

package database
import (
"fmt"
"log"
"xboard-go/internal/config"
"xboard-go/internal/model"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
var DB *gorm.DB
func InitDB() {
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
config.AppConfig.DBUser,
config.AppConfig.DBPass,
config.AppConfig.DBHost,
config.AppConfig.DBPort,
config.AppConfig.DBName,
)
var err error
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
Logger: logger.Default.LogMode(gormLogLevel(config.AppConfig.LogLevel)),
DisableForeignKeyConstraintWhenMigrating: true,
})
if err != nil {
log.Fatalf("Failed to connect to database: %v", err)
}
if err := DB.AutoMigrate(
&model.RealNameAuth{},
&model.UserOnlineDevice{},
&model.UserIPv6Subscription{},
); err != nil {
log.Fatalf("Failed to migrate database tables: %v", err)
}
if config.IsLogLevelEnabled(config.AppConfig.LogLevel, "info") {
log.Println("Database connection established")
}
}
func gormLogLevel(level string) logger.LogLevel {
switch config.NormalizeLogLevel(level) {
case "debug", "info":
return logger.Info
case "warn":
return logger.Warn
case "error":
return logger.Error
case "silent":
return logger.Silent
default:
return logger.Info
}
}