51 lines
1.3 KiB
Python
Executable File
51 lines
1.3 KiB
Python
Executable File
from pydantic import BaseModel
|
|
from typing import Optional, List
|
|
|
|
class GameStartRequest(BaseModel):
|
|
lang: Optional[str] = "de"
|
|
difficulty: Optional[str] = "all"
|
|
|
|
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
|
|
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
|
|
tipp: Optional[str] = None
|
|
name: Optional[str] = "Gast"
|
|
question_type: Optional[str] = "text"
|
|
falsche_antworten: Optional[List[str]] = None
|
|
difficulty: Optional[str] = "medium"
|
|
|
|
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
|