// Package impl 实现层，负责初始化各种服务连接
package impl

import (
	"bsm/full/module/base/feedback/internal/config"
	"git.apinb.com/bsm-sdk/core/cache/redis"
	"git.apinb.com/bsm-sdk/core/with"
	cache "github.com/patrickmn/go-cache"
	clientv3 "go.etcd.io/etcd/client/v3"
	"gorm.io/gorm"
)

var (
	RedisService *redis.RedisClient // Redis缓存服务
	EtcdService  *clientv3.Client   // Etcd服务发现客户端
	DBService    *gorm.DB           // 数据库服务
	MemorySerice *cache.Cache       // 内存缓存服务
)

// NewImpl 初始化各种服务连接
// 包括内存缓存、Redis缓存、数据库连接和Etcd服务发现
func NewImpl() {
	// 初始化内存缓存服务
	MemorySerice = with.Memory(nil)
	// 初始化Redis缓存服务
	RedisService = with.RedisCache(config.Spec.Cache)
	// 初始化数据库连接
	DBService = with.Databases(config.Spec.Databases, nil)
	// 初始化Etcd服务发现客户端
	EtcdService = with.Etcd(config.Spec.Etcd)
}
