"""Pydantic schemas for file upload, download, and list responses.""" import uuid from datetime import datetime from typing import Optional from pydantic import BaseModel, ConfigDict class FileUploadResponse(BaseModel): """Response after a successful file upload.""" model_config = ConfigDict(from_attributes=True) id: uuid.UUID vehicle_id: uuid.UUID original_filename: str stored_filename: str file_path: str mime_type: str file_size: int thumbnail_path: Optional[str] = None created_at: Optional[datetime] = None updated_at: Optional[datetime] = None class FileResponse(BaseModel): """Full file metadata response.""" model_config = ConfigDict(from_attributes=True) id: uuid.UUID vehicle_id: uuid.UUID original_filename: str stored_filename: str file_path: str mime_type: str file_size: int thumbnail_path: Optional[str] = None created_at: Optional[datetime] = None updated_at: Optional[datetime] = None class FileListResponse(BaseModel): """Paginated file list response.""" items: list[FileResponse] total: int page: int page_size: int class FileDeleteResponse(BaseModel): """Response after deleting a file.""" message: str = "File deleted" id: uuid.UUID