| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- 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 init() {
- core.Register("dbs", &DbsConfig{})
- }
|