Files

66 lines
1.7 KiB
Python
Executable File

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