package connection

import (
	"context"
	"fmt"
	"github.com/go-redis/redis/v8"
	"github.com/spf13/viper"
	"log"
)

var Cache *redis.Client

func ConnectRedis() *redis.Client {
	// connect to redis
	Cache = redis.NewClient(&redis.Options{
		Addr:     fmt.Sprintf("%s:%d", viper.GetString("redis.host"), viper.GetInt("redis.port")),
		Password: viper.GetString("redis.password"),
		DB:       viper.GetInt("redis.db"),
	})
	_, err := Cache.Ping(context.Background()).Result()

	if err != nil {
		log.Fatalln("Failed to connect to Redis server: ", err)
	} else {
		log.Println("Connected to Redis server successfully")
	}

	if viper.GetBool("debug") {
		Cache.FlushAll(context.Background())
		log.Println("Redis: Flushed all cache")
	}
	return Cache
}
