Nessuna descrizione
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

dbs_config.go 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package subconfigs
  2. import (
  3. "fmt"
  4. "log"
  5. "git.x2erp.com/qdy/go-base/config/core"
  6. )
  7. // DbsConfig 多数据库配置
  8. type DbsConfig struct {
  9. core.BaseConfig
  10. Databases map[string]*DbConfig `yaml:",inline"`
  11. }
  12. func (c *DbsConfig) Description() string {
  13. return "多个数据库连接配置"
  14. }
  15. func (c *DbsConfig) SetDefaults() {
  16. for _, db := range c.Databases {
  17. SetDbDefaults(db)
  18. }
  19. }
  20. func (c *DbsConfig) Load(data map[string]interface{}) error {
  21. // 直接使用 LoadFromYAML,会自动处理嵌套的 map[string]*DbConfig
  22. return c.LoadFromYAML(data, c)
  23. }
  24. func (c *DbsConfig) Validate() error {
  25. if len(c.Databases) == 0 {
  26. return fmt.Errorf("未配置任何数据库")
  27. }
  28. for name, db := range c.Databases {
  29. if err := ValidateDbConfig(db); err != nil {
  30. return fmt.Errorf("数据库 '%s' 配置错误: %v", name, err)
  31. }
  32. }
  33. return nil
  34. }
  35. func (c *DbsConfig) IsConfigured() bool {
  36. if len(c.Databases) == 0 {
  37. log.Println("⚠️ 警告: 未配置任何数据库")
  38. return false
  39. }
  40. allConfigured := true
  41. for name, db := range c.Databases {
  42. if !IsDbConfigured(db, name) {
  43. allConfigured = false
  44. }
  45. }
  46. return allConfigured
  47. }
  48. // Get 获取指定名称的数据库配置
  49. func (c *DbsConfig) GetDbConfig(name string) (*DbConfig, bool) {
  50. db, exists := c.Databases[name]
  51. return db, exists
  52. }
  53. // Default 获取第一个数据库配置
  54. func (c *DbsConfig) Default() *DbConfig {
  55. for _, db := range c.Databases {
  56. return db
  57. }
  58. return nil
  59. }
  60. func (c *DbsConfig) GetDbsConfig() map[string]*DbConfig {
  61. return c.Databases
  62. }
  63. func init() {
  64. core.Register("dbs", &DbsConfig{})
  65. }