You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.1 KiB
51 lines
1.1 KiB
package global
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/flipped-aurora/gin-vue-admin/server/utils/timer"
|
|
"github.com/songzhibin97/gkit/cache/local_cache"
|
|
|
|
"golang.org/x/sync/singleflight"
|
|
|
|
"go.uber.org/zap"
|
|
|
|
"github.com/flipped-aurora/gin-vue-admin/server/config"
|
|
|
|
"github.com/go-redis/redis/v8"
|
|
"github.com/spf13/viper"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var (
|
|
GVA_DB *gorm.DB
|
|
GVA_DBList map[string]*gorm.DB
|
|
GVA_REDIS *redis.Client
|
|
GVA_CONFIG config.Server
|
|
GVA_VP *viper.Viper
|
|
// GVA_LOG *oplogging.Logger
|
|
GVA_LOG *zap.Logger
|
|
GVA_Timer timer.Timer = timer.NewTimerTask()
|
|
GVA_Concurrency_Control = &singleflight.Group{}
|
|
|
|
BlackCache local_cache.Cache
|
|
lock sync.RWMutex
|
|
)
|
|
|
|
// GetGlobalDBByDBName 通过名称获取db list中的db
|
|
func GetGlobalDBByDBName(dbname string) *gorm.DB {
|
|
lock.RLock()
|
|
defer lock.RUnlock()
|
|
return GVA_DBList[dbname]
|
|
}
|
|
|
|
// MustGetGlobalDBByDBName 通过名称获取db 如果不存在则panic
|
|
func MustGetGlobalDBByDBName(dbname string) *gorm.DB {
|
|
lock.RLock()
|
|
defer lock.RUnlock()
|
|
db, ok := GVA_DBList[dbname]
|
|
if !ok || db == nil {
|
|
panic("db no init")
|
|
}
|
|
return db
|
|
}
|