package subconfigs import "fmt" // DatabaseConfig 数据库配置 type DatabaseConfig struct { BaseConfig 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"` } // NewDatabaseConfig 创建数据库配置实例 func NewDatabaseConfig() *DatabaseConfig { return &DatabaseConfig{} } // SetDefaults 设置默认值 func (c *DatabaseConfig) SetDefaults() { c.Type = "mysql" c.Port = 3306 c.MaxOpenConns = 100 c.MaxIdleConns = 20 c.ConnMaxLifetime = 3600 } // Load 从yaml数据加载 func (c *DatabaseConfig) Load(data map[string]interface{}) error { return c.LoadFromYAML(data, c) } // Validate 验证配置 func (c *DatabaseConfig) Validate() error { if c.Type == "" { return fmt.Errorf("database type is required") } return nil } // IsConfigured 判断是否已配置 func (c *DatabaseConfig) IsConfigured() bool { return c.Host != "" && c.Port > 0 && c.Username != "" && c.Database != "" } // 自动注册 func init() { Register("database", &DatabaseConfig{}) }