global.go 1.6 KB

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