from typing import Optional, List from pydantic import BaseModel, Field, field_validator from datetime import datetime class Pin(BaseModel): id: Optional[str] title: str = Field(..., min_length=3) description: str = Field(..., min_length=3) location: list = Field(..., min_items=2) complete_address: str = Field(..., min_length=3) files: Optional[List[str]] = [] # Liste des IDs d'images is_poi: bool = False user_id: Optional[str] = None date: Optional[datetime] = None @field_validator('location') @classmethod def validate_location(cls, v): if not v or len(v) == 0: raise ValueError('La location ne peut pas ĂȘtre vide') return v @field_validator('user_id') @classmethod def validate_user_id(cls, v, info): if not info.data.get('is_poi') and not v: raise ValueError('user_id est requis lorsque is_poi est False') return v