feat: adding model
This commit is contained in:
parent
3dec36d511
commit
ccb669c592
Binary file not shown.
File diff suppressed because one or more lines are too long
|
@ -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
|
Loading…
Reference in New Issue