from pydantic import BaseModel, Field from datetime import datetime from typing import Optional, Any class LessonPlanGenerate(BaseModel): title: str = Field(..., min_length=1) subject: str = "" grade: str = "" objectives: list[str] = [] duration: int = Field(default=45, ge=20, le=120) extra_requirements: str = "" class LessonPlanCreate(BaseModel): title: str = Field(..., min_length=1, max_length=200) subject: str = "" grade: str = "" objectives: list[str] = [] key_points: list[str] = [] difficulties: list[str] = [] content: dict[str, Any] = {} duration: int = 45 materials: list[str] = [] homework: list[str] = [] class LessonPlanUpdate(BaseModel): title: Optional[str] = None subject: Optional[str] = None grade: Optional[str] = None objectives: Optional[list[str]] = None key_points: Optional[list[str]] = None difficulties: Optional[list[str]] = None content: Optional[dict[str, Any]] = None duration: Optional[int] = None materials: Optional[list[str]] = None homework: Optional[list[str]] = None class LessonPlanOut(BaseModel): id: int user_id: int title: str subject: str = "" grade: str = "" objectives: list = [] key_points: list = [] difficulties: list = [] content: dict = {} duration: int = 45 materials: list = [] homework: list = [] created_at: datetime | None = None updated_at: datetime | None = None model_config = {"from_attributes": True}