generated from gilles/template-webapp
64 lines
1.5 KiB
Python
64 lines
1.5 KiB
Python
"""Schémas Pydantic pour les documents attachés.
|
|
|
|
Définit les schémas de validation pour les requêtes et réponses API.
|
|
"""
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
from app.models.document import DocumentType
|
|
|
|
|
|
class DocumentBase(BaseModel):
|
|
"""Schéma de base pour les documents."""
|
|
|
|
type: DocumentType = Field(..., description="Type de document")
|
|
description: str | None = Field(None, max_length=500, description="Description optionnelle")
|
|
|
|
|
|
class DocumentCreate(DocumentBase):
|
|
"""Schéma pour la création d'un document (métadonnées seulement).
|
|
|
|
Le fichier est uploadé séparément via multipart/form-data.
|
|
"""
|
|
|
|
item_id: int = Field(..., description="ID de l'objet associé")
|
|
|
|
|
|
class DocumentUpdate(BaseModel):
|
|
"""Schéma pour la mise à jour d'un document."""
|
|
|
|
type: DocumentType | None = None
|
|
description: str | None = Field(None, max_length=500)
|
|
|
|
|
|
class DocumentResponse(BaseModel):
|
|
"""Schéma de réponse pour un document."""
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
id: int
|
|
filename: str
|
|
original_name: str
|
|
type: DocumentType
|
|
mime_type: str
|
|
size_bytes: int
|
|
file_path: str
|
|
description: str | None
|
|
item_id: int
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class DocumentUploadResponse(BaseModel):
|
|
"""Schéma de réponse après upload d'un document."""
|
|
|
|
id: int
|
|
filename: str
|
|
original_name: str
|
|
type: DocumentType
|
|
mime_type: str
|
|
size_bytes: int
|
|
message: str = "Document uploadé avec succès"
|