Add get caption / get metadata routes
continuous-integration/drone/push Build is passing Details

nominatim_fix
Alix JEUDI--LEMOINE 1 week ago
parent 94ddbad34d
commit 1a72c23956

@ -1,6 +1,6 @@
kind: pipeline kind: pipeline
type: docker type: docker
name: Deploiement name: Backend CI/CD
trigger: trigger:
event: event:

@ -1,4 +1,4 @@
from typing import Optional from typing import Optional, Dict, Any
from pydantic import BaseModel from pydantic import BaseModel
from fastapi import UploadFile from fastapi import UploadFile
@ -6,5 +6,9 @@ class ImageUploadDTO(BaseModel):
exif_date: Optional[str] = None exif_date: Optional[str] = None
caption: Optional[str] = None caption: Optional[str] = None
class ImageUpdateCaptionDTO(BaseModel): class ImageCaptionDTO(BaseModel):
caption: str caption: str
class ImageMetadataDTO(BaseModel):
metadata: Dict[str, Any]
pin_id: Optional[str] = None

@ -11,7 +11,7 @@ from datetime import datetime
from app.models import HTTPError, User from app.models import HTTPError, User
from app.models.image import Image from app.models.image import Image
from app.dto.image import ImageUploadDTO, ImageUpdateCaptionDTO from app.dto.image import ImageUploadDTO, ImageCaptionDTO, ImageMetadataDTO
from .utils import get_current_user, objectid_misformatted from .utils import get_current_user, objectid_misformatted
import app.config as config import app.config as config
@ -194,7 +194,7 @@ async def delete_image(id: str, current_user: User = Depends(get_current_user)):
) )
async def update_caption( async def update_caption(
id: str, id: str,
caption_data: ImageUpdateCaptionDTO, caption_data: ImageCaptionDTO,
current_user: User = Depends(get_current_user) current_user: User = Depends(get_current_user)
): ):
check_image_permissions(id, current_user) check_image_permissions(id, current_user)
@ -205,3 +205,25 @@ async def update_caption(
) )
return {"message": "Caption updated successfully"} return {"message": "Caption updated successfully"}
@images_router.get(
path="/{id}/caption",
response_model=ImageCaptionDTO,
responses={401: {"model": HTTPError}, 403: {"model": HTTPError}, 404: {"model": HTTPError}}
)
async def get_caption(id: str, current_user: User = Depends(get_current_user)):
image = check_image_permissions(id, current_user)
return ImageCaptionDTO(caption=image.get("caption", ""))
@images_router.get(
path="/{id}/metadata",
response_model=ImageMetadataDTO,
responses={401: {"model": HTTPError}, 403: {"model": HTTPError}, 404: {"model": HTTPError}}
)
async def get_metadata(id: str, current_user: User = Depends(get_current_user)):
image = check_image_permissions(id, current_user)
return ImageMetadataDTO(
metadata=image.get("metadata", {}),
pin_id=str(image.get("pin_id")) if image.get("pin_id") else None
)

Loading…
Cancel
Save