No Description
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.

database_config.go 1.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package subconfigs
  2. import "fmt"
  3. // DatabaseConfig 数据库配置
  4. type DatabaseConfig struct {
  5. BaseConfig
  6. Type string `yaml:"type"`
  7. Host string `yaml:"host"`
  8. Port int `yaml:"port"`
  9. Username string `yaml:"username"`
  10. Password string `yaml:"password"`
  11. Database string `yaml:"database"`
  12. MaxOpenConns int `yaml:"max_open_conns"`
  13. MaxIdleConns int `yaml:"max_idle_conns"`
  14. ConnMaxLifetime int `yaml:"conn_max_lifetime"`
  15. }
  16. // NewDatabaseConfig 创建数据库配置实例
  17. func NewDatabaseConfig() *DatabaseConfig {
  18. return &DatabaseConfig{}
  19. }
  20. // SetDefaults 设置默认值
  21. func (c *DatabaseConfig) SetDefaults() {
  22. c.Type = "mysql"
  23. c.Port = 3306
  24. c.MaxOpenConns = 100
  25. c.MaxIdleConns = 20
  26. c.ConnMaxLifetime = 3600
  27. }
  28. // Load 从yaml数据加载
  29. func (c *DatabaseConfig) Load(data map[string]interface{}) error {
  30. return c.LoadFromYAML(data, c)
  31. }
  32. // Validate 验证配置
  33. func (c *DatabaseConfig) Validate() error {
  34. if c.Type == "" {
  35. return fmt.Errorf("database type is required")
  36. }
  37. return nil
  38. }
  39. // IsConfigured 判断是否已配置
  40. func (c *DatabaseConfig) IsConfigured() bool {
  41. return c.Host != "" && c.Port > 0 && c.Username != "" && c.Database != ""
  42. }
  43. // 自动注册
  44. func init() {
  45. Register("database", &DatabaseConfig{})
  46. }