from datetime import datetime from typing import Any, Optional from pydantic import BaseModel, Field class ExamCreate(BaseModel): title: str = Field(..., min_length=1, max_length=200) subject: str = "" grade: str = "" questions: list[dict[str, Any]] = [] answers: list[Any] = [] duration: int = 90 total_score: int = 100 difficulty: str = "medium" knowledge_points: list[str] = [] class ExamUpdate(BaseModel): title: Optional[str] = None subject: Optional[str] = None grade: Optional[str] = None questions: Optional[list[dict[str, Any]]] = None answers: Optional[list[Any]] = None duration: Optional[int] = None total_score: Optional[int] = None difficulty: Optional[str] = None knowledge_points: Optional[list[str]] = None class ExamOut(BaseModel): id: int user_id: int title: str subject: str = "" grade: str = "" questions: list = [] answers: list = [] duration: int = 90 total_score: int = 100 difficulty: str = "medium" knowledge_points: list = [] created_at: datetime | None = None updated_at: datetime | None = None model_config = {"from_attributes": True}