package models import ( "fmt" "log/slog" ) import ( "gorm.io/driver/postgres" "gorm.io/gorm" ) import ( "resource-server/common" "resource-server/logger" ) var ( DB *gorm.DB err error ) func panicHelper(err error) { if err != nil { panic(err) } } func migrate() { panicHelper(DB.AutoMigrate(&ConfigItem{})) var count int64 DB.Model(&ConfigItem{}).Count(&count) if count == 0 { panicHelper(initConfigItem()) } } func SetupGorm(m bool) { slog.Info("setup gorm") dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=disable TimeZone=Asia/Shanghai", common.PostgresConfig.Ip, common.PostgresConfig.Username, common.PostgresConfig.Password, common.PostgresConfig.Name, common.PostgresConfig.Port, ) if common.LoggerConfig.LogLevel == "debug" { DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{ Logger: logger.NewGormLogger(logger.WithGroup("gorm")), }) } else { DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{}) } if err != nil { panic(err) } if m { migrate() } slog.Info("setup gorm ok") }