| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- 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{})
- }
|