Files

58 lines
1.3 KiB
Python

"""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