from datetime import datetime from pydantic import BaseModel # --- Tag --- class TagBase(BaseModel): name: str category: str class TagCreate(TagBase): pass class TagOut(TagBase): id: int model_config = {"from_attributes": True} class TagsByCategory(BaseModel): category: str tags: list[TagOut] # --- Library --- class LibraryCreate(BaseModel): name: str path: str class LibraryOut(BaseModel): id: int name: str path: str model_config = {"from_attributes": True} # --- MediaItem --- class MediaItemOut(BaseModel): id: int library_id: int rel_path: str filename: str media_type: str size_bytes: int | None missing: bool tags: list[TagOut] created_at: datetime updated_at: datetime model_config = {"from_attributes": True} class MediaItemSummary(BaseModel): id: int filename: str rel_path: str media_type: str missing: bool model_config = {"from_attributes": True} # --- Browse --- class BrowseEntry(BaseModel): name: str type: str # 'dir' | 'image' | 'video' rel_path: str media_item_id: int | None = None class BrowseResult(BaseModel): path: str entries: list[BrowseEntry] # --- Search --- class SearchResult(BaseModel): items: list[MediaItemOut] # --- Tag assignment --- class TagIdList(BaseModel): tag_ids: list[int]