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