global.go 1.6 KB

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