"""admin 新手引导视频配置 schemas(开关 / 视频地址 / 前几次 / 每次金币)。"""
from __future__ import annotations

from pydantic import BaseModel, Field

from app.repositories.guide_video import MAX_PLAYS_LIMIT, REWARD_COIN_LIMIT


class GuideVideoConfigOut(BaseModel):
    scene: str
    enabled: bool
    video_url: str | None = None   # 相对地址 /media/guide_video/xxx.mp4;未配片 = None
    max_plays: int
    reward_coin: int
    updated_at: str | None = None
    # 只读统计,后台展示用:已有多少次播放、其中已发币多少次。
    total_plays: int = 0
    granted_plays: int = 0


class GuideVideoConfigUpdate(BaseModel):
    """部分更新:只改传入(非 None)字段。视频文件走 /video 上传接口。"""

    enabled: bool | None = None
    max_plays: int | None = Field(default=None, ge=0, le=MAX_PLAYS_LIMIT)
    reward_coin: int | None = Field(default=None, ge=0, le=REWARD_COIN_LIMIT)
