feat(T05): Dateiablage pro Fahrzeug + File UI with thumbnails and gallery
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user