package main

import (
	"Go_Test/config"
	"fmt"
	"time"
)

// ConnectRedis 连接Redis
func ConnectRedis() error {
	var err error
	RedisClient, err = config.NewRedisClient(1)
	if err != nil {
		return fmt.Errorf("failed to connect to Redis: %v", err)
	}
	return nil
}

// InitUser 初始化用户连接
func InitUser(username string, password string) error {

	// 连接Redis
	err := ConnectRedis()
	if err != nil {
		return err
	}

	SaveUserToRedis(GetUsernameAndPassword(username, password))

	return nil
}

// 获取 username 和 password
func GetUsernameAndPassword(username string, password string) config.UserConfig {

	// 将用户信息保存到 UserConfig 结构体中
	UserConfig := config.UserConfig{
		Username:  username,
		Password:  password,
		LoginTime: time.Now().Format("2006-01-02 15:04:05"),
	}

	return UserConfig
}

// 将用户信息保存到 Redis 中
func SaveUserToRedis(UserConfig config.UserConfig) error {

	// 使用用户名作为 Redis 的 key
	key := UserConfig.Username

	// 将用户信息保存到 Redis 中
	err := RedisClient.HSet(ctx, key,
		"username", UserConfig.Username,
		"password", UserConfig.Password,
		"login_time", UserConfig.LoginTime,
	).Err()
	if err != nil {
		return fmt.Errorf("保存用户信息失败: %v", err)

	}

	//设置过期时间
	err = RedisClient.Expire(ctx, key, 24*time.Hour).Err()
	if err != nil {
		return fmt.Errorf("设置过期时间失败: %v", err)
	}

	fmt.Println("用户信息保存成功")
	return nil
}