package subconfigs import ( "fmt" "log" "git.x2erp.com/qdy/go-base/config/core" ) // DbsConfig 多数据库配置 type DbsConfig struct { core.BaseConfig Databases map[string]*DbConfig `yaml:",inline"` } func (c *DbsConfig) Description() string { return "多个数据库连接配置" } func (c *DbsConfig) SetDefaults() { for _, db := range c.Databases { SetDbDefaults(db) } } func (c *DbsConfig) Load(data map[string]interface{}) error { // 直接使用 LoadFromYAML,会自动处理嵌套的 map[string]*DbConfig return c.LoadFromYAML(data, c) } func (c *DbsConfig) Validate() error { if len(c.Databases) == 0 { return fmt.Errorf("未配置任何数据库") } for name, db := range c.Databases { if err := ValidateDbConfig(db); err != nil { return fmt.Errorf("数据库 '%s' 配置错误: %v", name, err) } } return nil } func (c *DbsConfig) IsConfigured() bool { if len(c.Databases) == 0 { log.Println("⚠️ 警告: 未配置任何数据库") return false } allConfigured := true for name, db := range c.Databases { if !IsDbConfigured(db, name) { allConfigured = false } } return allConfigured } // Get 获取指定名称的数据库配置 func (c *DbsConfig) GetDbConfig(name string) (*DbConfig, bool) { db, exists := c.Databases[name] return db, exists } // Default 获取第一个数据库配置 func (c *DbsConfig) Default() *DbConfig { for _, db := range c.Databases { return db } return nil } func (c *DbsConfig) GetDbsConfig() map[string]*DbConfig { return c.Databases } func init() { core.Register("dbs", &DbsConfig{}) }