global.go 1.1 KB

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