from datetime import datetime from typing import Optional from pydantic import BaseModel, Field class SubjectCreate(BaseModel): name: str = Field(min_length=1) class Subject(BaseModel): id: int name: str slug: str created_at: datetime class WeekCreate(BaseModel): number: int = Field(ge=1) title: Optional[str] = None class WeekUpdate(BaseModel): number: int = Field(ge=1) title: Optional[str] = None class Week(BaseModel): id: int subject_id: int number: int title: Optional[str] created_at: datetime class MarkdownUpdate(BaseModel): content: str class Job(BaseModel): id: int status: str message: str source_id: Optional[int] = None document_id: Optional[int] = None created_at: datetime updated_at: datetime class Document(BaseModel): id: int source_id: int title: str markdown_path: str created_at: datetime