from datetime import datetime from pydantic import BaseModel class QuizCreate(BaseModel): section_id: int title: str mode: str = "timed" # timed, learning time_limit_minutes: int | None = None model_id: str | None = None # override extraction model question_category_id: int | None = None # assign extracted questions to this bank category class QuestionResponse(BaseModel): id: int question_text: str question_type: str options: list[str] | None image_path: str | None = None class Config: from_attributes = True class QuestionWithAnswer(QuestionResponse): correct_answer: str explanation: str | None page_reference: int | None class QuizResponse(BaseModel): id: int section_id: int user_id: int title: str questions_count: int mode: str time_limit_minutes: int | None skipped_questions: str | None = None category_id: int | None = None created_at: datetime class Config: from_attributes = True class QuizDetail(QuizResponse): questions: list[QuestionResponse] = [] class QuizLearningDetail(QuizResponse): """Learning mode — includes answers and explanations.""" questions: list[QuestionWithAnswer] = [] class QuizReview(QuizResponse): questions: list[QuestionWithAnswer] = []