global.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package global
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "github.com/pkg/errors"
  5. "github.com/redis/go-redis/v9"
  6. "gorm.io/gorm"
  7. "sync"
  8. )
  9. var (
  10. AMS_DB *gorm.DB // 管理后台数据库
  11. AMS_BIZ_DBS map[string]*gorm.DB // 业务库列表
  12. AMS_BIZ_ALIAS_DB_MAP map[string]string // -别名 - 数据库DB 映射
  13. AMS_BIZ_ALIAS_PROXY_MAP map[string]string // 别名-代理 映射
  14. GVA_ROUTERS gin.RoutesInfo // 当前http路由信息
  15. lock sync.RWMutex
  16. AMS_REDIS redis.UniversalClient
  17. )
  18. // BizDBByAlias 通过名称获取db list中的db
  19. func BizDBByAlias(dbAlias string) (*gorm.DB, error) {
  20. lock.RLock()
  21. defer lock.RUnlock()
  22. // dbname转换为alias
  23. for k, dbName := range AMS_BIZ_ALIAS_DB_MAP {
  24. if dbName == dbAlias {
  25. dbAlias = k
  26. }
  27. }
  28. v, ok := AMS_BIZ_DBS[dbAlias]
  29. if !ok {
  30. return nil, errors.New("biz db not found")
  31. }
  32. return v, nil
  33. }
  34. func DefaultAlias() string {
  35. for k, _ := range AMS_BIZ_ALIAS_DB_MAP {
  36. return k
  37. }
  38. return ""
  39. }