package cache

import (
	"strconv"

	"dubbo.apache.org/dubbo-go/v3/common/logger"
	"github.com/go-redis/redis"
	"gopkg.in/ini.v1"
)

// RedisClient Redis缓存客户端单例
var (
	RedisClient *redis.Client
	RedisDB     int
	RedisAddr   string
	RedisPw     string
	//RedisDbName string
)

// InitRedis 在中间件中初始化redis链接  防止循环导包，所以放在这里
func InitRedis(confPath string) {
	//从本地读取环境变量
	file, err := ini.Load(confPath)
	if err != nil {
		panic(err)
	}
	LoadRedisData(file)
	connRedis()
}

// connRedis 在中间件中初始化redis链接
func connRedis() {
	RedisClient = redis.NewClient(&redis.Options{
		Addr:     RedisAddr,
		Password: RedisPw,
		DB:       RedisDB,
	})
	_, err := RedisClient.Ping().Result()
	if err != nil {
		logger.Errorf("connRedis err", err)
		panic(err)
	}
}

func LoadRedisData(file *ini.File) {
	dbStr := file.Section("redis").Key("RedisDb").String()
	RedisDB, _ = strconv.Atoi(dbStr)
	RedisAddr = file.Section("redis").Key("RedisAddr").String()
	RedisPw = file.Section("redis").Key("RedisPW").String()
	//RedisDbName = file.Section("redis").Key("RedisDbName").String()
}
