config.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package config
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/core/logs"
  5. "github.com/beego/beego/v2/server/web"
  6. )
  7. const (
  8. SPLIT = "."
  9. )
  10. type Config interface {
  11. InitConfig()
  12. }
  13. type BaseConfig struct {
  14. prefix string
  15. }
  16. func (b *BaseConfig) GetString(key string) string {
  17. value, err := web.AppConfig.String(fmt.Sprintf("%s%s%s", b.prefix, SPLIT, key))
  18. if err != nil {
  19. return ""
  20. }
  21. return value
  22. }
  23. func (b *BaseConfig) GetInt(key string) int {
  24. value, err := web.AppConfig.Int(fmt.Sprintf("%s%s%s", b.prefix, SPLIT, key))
  25. if err != nil {
  26. return 0
  27. }
  28. return value
  29. }
  30. type Instance func() Config
  31. var configs = make(map[string]Instance)
  32. func GetConfig(name string) (config Config) {
  33. instanceFunc, ok := configs[name]
  34. if !ok {
  35. logs.Error("配置信息不存在", name)
  36. return nil
  37. }
  38. config = instanceFunc()
  39. config.InitConfig()
  40. return config
  41. }
  42. func Register(name string, adapter Instance) {
  43. if adapter == nil {
  44. panic("缓存类型不存在")
  45. }
  46. if _, ok := configs[name]; ok {
  47. panic("当前缓存类型已注册:" + name)
  48. }
  49. configs[name] = adapter
  50. }