<?php

/**
 * 文件功能：赛马竞猜下注记录表迁移
 *
 * 记录每场比赛中每位用户的下注信息，
 * 包括押注的马匹、金额、结果和赔付金额。
 *
 * @author  ChatRoom Laravel
 *
 * @version 1.0.0
 */

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * 创建 horse_bets 表。
     */
    public function up(): void
    {
        Schema::create('horse_bets', function (Blueprint $table) {
            $table->id();

            // 关联赛事
            $table->foreignId('race_id')->constrained('horse_races')->cascadeOnDelete();

            // 下注用户
            $table->foreignId('user_id')->constrained('users')->cascadeOnDelete();

            // 押注的马匹 ID（1~N）
            $table->tinyInteger('horse_id');

            // 下注金额
            $table->unsignedBigInteger('amount');

            // 状态：pending（待开奖）| won（中奖）| lost（未中）
            $table->string('status', 20)->default('pending');

            // 实际赔付金额（含本金返还，lost 时为 0）
            $table->unsignedBigInteger('payout')->default(0);

            $table->timestamps();

            // 每场每人只能押注一次
            $table->unique(['race_id', 'user_id']);

            // 加速查询
            $table->index('status');
        });
    }

    /**
     * 回滚。
     */
    public function down(): void
    {
        Schema::dropIfExists('horse_bets');
    }
};
