<?php

/**
 * 文件功能：猜谜活动回合模型
 *
 * 每次出题对应一个回合，记录题型、题目、状态、奖励和获胜者。
 */

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

/**
 * 类功能：记录猜谜活动每一轮的题型、奖励与结算状态。
 */
class RiddleGameRound extends Model
{
    /**
     * 属性功能：显式绑定历史回合表名，避免类名重命名后推导到错误表。
     *
     * @var string
     */
    protected $table = 'idiom_game_rounds';

    /**
     * 方法功能：声明可批量赋值的回合字段。
     *
     * @var array<int, string>
     */
    protected $fillable = [
        'room_id',
        'idiom_id',
        'quiz_type',
        'status',
        'reward_gold',
        'reward_exp',
        'winner_id',
        'winner_username',
        'started_at',
        'ended_at',
    ];

    /**
     * 方法功能：定义回合字段的类型转换规则。
     *
     * @return array<string, string>
     */
    protected function casts(): array
    {
        return [
            'room_id' => 'integer',
            'idiom_id' => 'integer',
            'reward_gold' => 'integer',
            'reward_exp' => 'integer',
            'started_at' => 'datetime',
            'ended_at' => 'datetime',
        ];
    }

    /**
     * 方法功能：关联本回合对应的猜谜题目。
     */
    public function idiom(): BelongsTo
    {
        return $this->belongsTo(Riddle::class);
    }
}
