You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
api/app/dto/pin.py

28 lines
754 B

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
complete_address: str
files: List[str] = Field(default_factory=list)
user_id: str = None
date: Optional[datetime] = None
is_poi: bool = False
@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