from pydantic import BaseModel from typing import List, Optional, Dict, Any class RegisterRequest(BaseModel): nickname: str password: str class RegisterResponse(BaseModel): success: bool = True exception: Optional[Dict[str, str]] = None nickname: str accessToken: str class GameRequest(BaseModel): accessToken: str class EnterGameRequest(GameRequest): gameId: int class PickRequest(GameRequest): cards: List[int] class CardResponse(BaseModel): id: int color: int shape: int fill: int count: int class FieldResponse(BaseModel): cards: List[CardResponse] status: str score: int class PickResponse(BaseModel): isSet: bool score: int class UserScore(BaseModel): name: str score: int class ScoresResponse(BaseModel): success: bool = True exception: Optional[Dict[str, str]] = None users: List[UserScore] class GameListResponse(BaseModel): success: bool = True exception: Optional[Dict[str, str]] = None games: List[Dict[str, int]] class CreateGameResponse(BaseModel): success: bool = True exception: Optional[Dict[str, str]] = None gameId: int class BaseResponseModel(BaseModel): success: bool = True exception: Optional[Dict[str, str]] = None class WebSocketMessage(BaseModel): type: str data: Optional[Dict[str, Any]] = None accessToken: Optional[str] = None