from pydantic import BaseModel from typing import Optional, List class GameStartRequest(BaseModel): lang: Optional[str] = "de" difficulty: Optional[str] = "all" category: Optional[str] = "all" recent_ids: Optional[List[int]] = None wrong_ids: Optional[List[int]] = None class GameStartResponse(BaseModel): session_id: str question_number: int total_questions: int category: str question: str score: int attempts_used: int max_attempts: int = 3 difficulty: Optional[str] = "medium" lang: Optional[str] = "de" class GameCheckRequest(BaseModel): session_id: str answer: str class GameCheckResponse(BaseModel): correct: bool score: int points_earned: Optional[int] = 0 question_id: Optional[int] = None attempts_used: int attempts_left: int max_attempts: int = 3 is_finished: bool revealed_answer: Optional[str] = None next_question: Optional[dict] = None class SuggestionCreateRequest(BaseModel): frage: str antwort: str category: Optional[str] = "general" tipp: Optional[str] = None name: Optional[str] = "Gast" question_type: Optional[str] = "text" falsche_antworten: Optional[List[str]] = None difficulty: Optional[str] = "medium" class LeaderboardSubmitRequest(BaseModel): nickname: str score: int total_questions: int = 10 time_seconds: int difficulty: Optional[str] = "all" lang: Optional[str] = "de" session_id: Optional[str] = None class QuestionAdminCreate(BaseModel): category: str = "harry_potter" question: str canonical_answer: str accepted_answers: Optional[str] = None hint: Optional[str] = None status: str = "active" sort_order: int = 0