package dao

import (
	"fengkuangGameServerJob/model"
	"fengkuangGameServerJob/pkg/util"
	"time"
)

// GetArenaRanking 分页获取竞技排名列表
func GetArenaRanking(beginId, limit int) []*model.ArenaRanking {
	var lists []*model.ArenaRanking
	err := DB().Select("ranking_id", "player_id", "robot_id", "ranking", "server_id").
		Where("ranking_id > ?", beginId).
		Order("ranking_id ASC").
		Limit(limit).
		Find(&lists).Error
	util.CheckErr(err)
	return lists
}

// UpdateArenaReward 更新玩家竞技场奖励,返回受影响函数
func UpdateArenaReward(reward model.ArenaReward) int64 {
	exec := DB().Exec(`UPDATE game_arena_reward 
SET 
    day = ?,
    rewards = ?,
    draw_state = ?,
    updated_at = ?
WHERE
    player_id = ? AND reward_type = ? LIMIT 1;`, reward.Day, reward.Rewards, reward.DrawState, time.Now(), reward.PlayerId, reward.RewardType)
	util.CheckErr(exec.Error)
	return exec.RowsAffected
}

// SaveArenaRewardRecord 批量保存竞技场奖励
func SaveArenaRewardRecord(rewards []*model.ArenaReward) {
	exec := DB().Create(&rewards)
	util.CheckErr(exec.Error)
}

// GetRobotsByServerIds 通过serverIds来获取机器人的基础信息
func GetRobotsByServerIds(serverIds []int, column []string, size int) ([]*model.Robot, error) {
	var robots []*model.Robot
	tmp := DB().Select(column).
		Where("server_id IN ?", serverIds).
		Order("robot_id ASC")
	if size > 0 {
		tmp.Limit(size)
	}
	err := tmp.Find(&robots).Error
	return robots, err
}
