from datetime import datetime from pydantic import BaseModel class CategoryOut(BaseModel): id: str name: str model_config = {"from_attributes": True} class DocumentOut(BaseModel): id: str user_id: str filename: str title: str | None file_size: int status: str document_type: str | None extracted_data: str | None # JSON string — frontend calls JSON.parse() tags: str | None # JSON array string error_message: str | None created_at: datetime processed_at: datetime | None categories: list[CategoryOut] = [] source: str = "upload" watch_path: str | None = None suggested_folder: str | None = None suggested_filename: str | None = None share_count: int = 0 viewer_can_delete: bool = False model_config = {"from_attributes": True} class DocumentPage(BaseModel): items: list[DocumentOut] total: int page: int pages: int class DocumentStatusOut(BaseModel): id: str status: str error_message: str | None processed_at: datetime | None model_config = {"from_attributes": True} class DocumentTypeUpdate(BaseModel): document_type: str class TagsUpdate(BaseModel): tags: list[str] class TitleUpdate(BaseModel): title: str