feat: endpoint PUT /api/v1/images/{id}/tags — mise à jour manuelle des tags
Permet au dashboard imagod-web de modifier les tags AI d'une image
via PUT /api/v1/images/{id}/tags avec body {"tags": ["tag1", "tag2"]}.
Scope requis : images:write
This commit is contained in:
@@ -444,6 +444,34 @@ async def reprocess_image(
|
||||
return ReprocessResponse(id=image_id)
|
||||
|
||||
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# TAGS (mise à jour manuelle)
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
|
||||
@router.put(
|
||||
"/{image_id}/tags",
|
||||
summary="Mettre à jour les tags d'une image",
|
||||
description="Remplace complètement la liste des tags AI de l'image.",
|
||||
dependencies=[Depends(require_scope("images:write"))],
|
||||
)
|
||||
async def update_tags(
|
||||
image_id: int,
|
||||
body: dict,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
client: APIClient = Depends(get_current_client),
|
||||
):
|
||||
image = await get_image_or_404(image_id, client.id, db)
|
||||
|
||||
tags = body.get("tags", [])
|
||||
if not isinstance(tags, list) or not all(isinstance(t, str) for t in tags):
|
||||
raise HTTPException(status_code=400, detail="'tags' doit être une liste de chaînes")
|
||||
|
||||
image.ai_tags = tags
|
||||
await db.commit()
|
||||
|
||||
return {"updated": True, "id": image_id, "tags": tags}
|
||||
|
||||
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
# SUPPRESSION
|
||||
# ─────────────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user