feat: adding model

This commit is contained in:
akhdanre 2025-05-15 21:38:32 +07:00
parent 3dec36d511
commit ccb669c592
3 changed files with 83 additions and 0 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,82 @@
from pydantic import BaseModel, Field
from typing import List, Dict, Union, Optional
class ConnectionResponse(BaseModel):
status: str = "connected"
sid: str
class JoinRoomRequest(BaseModel):
session_code: str = Field(..., description="Unique code for the quiz session")
user_id: str = Field(..., description="Unique identifier for the user")
class RoomMessageResponse(BaseModel):
type: str = Field(..., description="Type of room message (join/leave)")
message: str
room: str
argument: Optional[str] = None
data: Optional[Dict] = None
# Question Models
class QuestionType:
FILL_THE_BLANK = "fill_the_blank"
TRUE_FALSE = "true_false"
OPTION = "option"
class QuizQuestion(BaseModel):
index: int
question: str
duration: int
type: str = Field(..., description="Type of question: fill_the_blank, true_false, or option")
options: Optional[List[str]] = None
# Answer Submission Models
class AnswerSubmissionRequest(BaseModel):
session_id: str
user_id: str
question_index: int
answer: Union[str, bool, int]
class AnswerSubmissionResponse(BaseModel):
user_id: str
question_index: int
answer: Union[str, bool, int]
correct: bool
# Scoring Models
class UserScore(BaseModel):
correct: int = 0
incorrect: int = 0
class ScoreUpdateResponse(BaseModel):
scores: Dict[str, UserScore]
# Session Management Models
class LeaveRoomRequest(BaseModel):
session_id: str
user_id: str
username: Optional[str] = "anonymous"
class EndSessionRequest(BaseModel):
session_id: str
user_id: str
# Messaging Models
class SendMessageRequest(BaseModel):
session_id: str
message: str
username: Optional[str] = "anonymous"
class ReceiveMessageResponse(BaseModel):
message: str
from_user: str = Field(alias="from")
# Quiz Flow Models
class QuizStartRequest(BaseModel):
session_code: str
class QuizStatusResponse(BaseModel):
message: str
# Error Model
class ErrorResponse(BaseModel):
message: str