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 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package subconfigs
  2. import (
  3. "fmt"
  4. "log"
  5. )
  6. // DatabaseConfig 数据库配置
  7. type DatabaseConfig struct {
  8. BaseConfig
  9. Type string `yaml:"type"`
  10. Host string `yaml:"host"`
  11. Port int `yaml:"port"`
  12. Username string `yaml:"username"`
  13. Password string `yaml:"password"`
  14. Database string `yaml:"database"`
  15. MaxOpenConns int `yaml:"max_open_conns"`
  16. MaxIdleConns int `yaml:"max_idle_conns"`
  17. ConnMaxLifetime int `yaml:"conn_max_lifetime"`
  18. }
  19. // SetDefaults 设置默认值 - 实现 ConfigLoader 接口
  20. func (c *DatabaseConfig) SetDefaults() {
  21. if c.Type == "" {
  22. c.Type = "mysql"
  23. }
  24. if c.Port == 0 {
  25. c.Port = 3306
  26. }
  27. if c.MaxOpenConns == 0 {
  28. c.MaxOpenConns = 100
  29. }
  30. if c.MaxIdleConns == 0 {
  31. c.MaxIdleConns = 20
  32. }
  33. if c.ConnMaxLifetime == 0 {
  34. c.ConnMaxLifetime = 3600
  35. }
  36. }
  37. // Load 从yaml数据加载 - 实现 ConfigLoader 接口
  38. func (c *DatabaseConfig) Load(data map[string]interface{}) error {
  39. return c.LoadFromYAML(data, c)
  40. }
  41. // Validate 验证配置(数据库配置)
  42. func (c *DatabaseConfig) Validate() error {
  43. if c.Type == "" {
  44. return fmt.Errorf("database type is required")
  45. }
  46. if c.Host == "" {
  47. return fmt.Errorf("database host is required")
  48. }
  49. if c.Port <= 0 || c.Port > 65535 {
  50. return fmt.Errorf("invalid database port: %d", c.Port)
  51. }
  52. if c.Database == "" {
  53. return fmt.Errorf("database name is required")
  54. }
  55. return nil
  56. }
  57. // IsConfigured 判断是否已配置(数据库配置)
  58. func (c *DatabaseConfig) IsConfigured() bool {
  59. if c.Host == "" {
  60. log.Println("⚠️ 警告: 数据库 Host 未配置")
  61. return false
  62. }
  63. if c.Port <= 0 {
  64. log.Println("⚠️ 警告: 数据库 Port 未配置或无效")
  65. return false
  66. }
  67. if c.Username == "" {
  68. log.Println("⚠️ 警告: 数据库 Username 未配置")
  69. return false
  70. }
  71. if c.Database == "" {
  72. log.Println("⚠️ 警告: 数据库名称未配置")
  73. return false
  74. }
  75. return true
  76. }
  77. // 自动注册
  78. func init() {
  79. Register("database", &DatabaseConfig{})
  80. }