from pydantic import BaseModel, Field, field_validator from typing import List, Optional from bson import ObjectId import bson from datetime import datetime class PinDTO(BaseModel): title: str description: str location: list files: List[str] = Field(default_factory=list) user_id: str = None date: Optional[datetime] = None @field_validator('files') @classmethod def validate_files(cls, files): for file_id in files: try: ObjectId(file_id) except bson.errors.InvalidId: raise ValueError(f"Invalid image ID format: {file_id}") return files class PinShareDTO(BaseModel): friend_id: str