package subconfigs import ( "fmt" "log" ) // DbConfig 单个数据库配置(共享结构) type DbConfig struct { Type string `yaml:"type"` Host string `yaml:"host"` Port int `yaml:"port"` Username string `yaml:"username"` Password string `yaml:"password"` Database string `yaml:"database"` MaxOpenConns int `yaml:"max_open_conns"` MaxIdleConns int `yaml:"max_idle_conns"` ConnMaxLifetime int `yaml:"conn_max_lifetime"` } // SetDbDefaults 设置数据库配置默认值 func SetDbDefaults(c *DbConfig) { if c.Type == "" { c.Type = "mysql" } if c.Port == 0 { c.Port = 3306 } if c.MaxOpenConns == 0 { c.MaxOpenConns = 100 } if c.MaxIdleConns == 0 { c.MaxIdleConns = 20 } if c.ConnMaxLifetime == 0 { c.ConnMaxLifetime = 3600 } } // ValidateDbConfig 验证数据库配置 func ValidateDbConfig(c *DbConfig) error { if c.Type == "" { return fmt.Errorf("database type is required") } if c.Host == "" { return fmt.Errorf("database host is required") } if c.Port <= 0 || c.Port > 65535 { return fmt.Errorf("invalid database port: %d", c.Port) } if c.Database == "" { return fmt.Errorf("database name is required") } return nil } // IsDbConfigured 判断数据库是否已配置 func IsDbConfigured(c *DbConfig, name string) bool { if c.Host == "" { if name != "" { log.Printf("⚠️ 警告: 数据库 '%s' Host 未配置", name) } else { log.Println("⚠️ 警告: 数据库 Host 未配置") } return false } if c.Port <= 0 { if name != "" { log.Printf("⚠️ 警告: 数据库 '%s' Port 未配置或无效", name) } else { log.Println("⚠️ 警告: 数据库 Port 未配置或无效") } return false } if c.Username == "" { if name != "" { log.Printf("⚠️ 警告: 数据库 '%s' Username 未配置", name) } else { log.Println("⚠️ 警告: 数据库 Username 未配置") } return false } if c.Database == "" { if name != "" { log.Printf("⚠️ 警告: 数据库 '%s' 名称未配置", name) } else { log.Println("⚠️ 警告: 数据库名称未配置") } return false } return true }