package rediscli

import (
	"context"
	"time"

	"github.com/redis/go-redis/v9"
)

var cli *redis.Client

func SetCli(client *redis.Client) {
	cli = client
}

func GetCli() *redis.Client {
	return cli
}

// get key value
func Get(key string) (string, error) {
	return cli.Get(context.TODO(), key).Result()
}

// set key value
func Set(key string, val string, expiration time.Duration) {
	cli.Set(context.TODO(), key, val, expiration)
}

func Del(key string) {
	cli.Del(context.TODO(), key)
}

func HSet(key string, field string, val any) {
	cli.HSet(context.TODO(), key, field, val)
}

// hget
func HGet(key string, field string) string {
	val, _ := cli.HGet(context.TODO(), key, field).Result()
	return val
}

// hget
func HExist(key string, field string) bool {
	val, _ := cli.HExists(context.TODO(), key, field).Result()
	return val
}

// hgetall
func HGetAll(key string) map[string]string {
	vals, _ := cli.HGetAll(context.TODO(), key).Result()
	return vals
}

// hdel
func HDel(key string, fields ...string) int {
	return int(cli.HDel(context.TODO(), key, fields...).Val())
}
