global.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package global
  2. import (
  3. "github.com/go-redis/redis/v8"
  4. "github.com/songzhibin97/gkit/cache/local_cache"
  5. "github.com/spf13/viper"
  6. "go.uber.org/zap"
  7. "golang.org/x/sync/singleflight"
  8. "gorm.io/gorm"
  9. "server/config"
  10. "server/utils/timer"
  11. "sync"
  12. )
  13. var (
  14. GVA_DB *gorm.DB
  15. GVA_DBList map[string]*gorm.DB
  16. GVA_REDIS *redis.Client
  17. GVA_CONFIG config.Server
  18. GVA_VP *viper.Viper
  19. GVA_LOG *zap.Logger
  20. GVA_Timer timer.Timer = timer.NewTimerTask()
  21. GVA_Concurrency_Control = &singleflight.Group{}
  22. BlackCache local_cache.Cache
  23. lock sync.RWMutex
  24. )
  25. // GetGlobalDBByDBName 通过名称获取db list中的db
  26. func GetGlobalDBByDBName(dbname string) *gorm.DB {
  27. lock.RLock()
  28. defer lock.RUnlock()
  29. return GVA_DBList[dbname]
  30. }
  31. // MustGetGlobalDBByDBName 通过名称获取db 如果不存在则panic
  32. func MustGetGlobalDBByDBName(dbname string) *gorm.DB {
  33. lock.RLock()
  34. defer lock.RUnlock()
  35. db, ok := GVA_DBList[dbname]
  36. if !ok || db == nil {
  37. panic("db no init")
  38. }
  39. return db
  40. }