diff --git a/api/endpoints/__pycache__/assets_router.cpython-313.pyc b/api/endpoints/__pycache__/assets_router.cpython-313.pyc index ace1611..b406e97 100644 Binary files a/api/endpoints/__pycache__/assets_router.cpython-313.pyc and b/api/endpoints/__pycache__/assets_router.cpython-313.pyc differ diff --git a/api/endpoints/assets_router.py b/api/endpoints/assets_router.py index c0f514c..a40395b 100644 --- a/api/endpoints/assets_router.py +++ b/api/endpoints/assets_router.py @@ -49,6 +49,22 @@ async def get_asset( return Response(content=content, media_type=media_type, headers=headers) +@router.delete("/{asset_id}", status_code=status.HTTP_204_NO_CONTENT) +async def delete_asset( + asset_id: str, + dao: DAO = Depends(get_dao) +): + logger.info(f"delete_asset called for ID: {asset_id}") + # 1. Проверяем наличие (опционально, delete_one вернет false если нет, но для 404 нужно знать) + # Можно просто попробовать удалить + deleted = await dao.assets.delete_asset(asset_id) + if not deleted: + raise HTTPException(status_code=404, detail="Asset not found") + + logger.info(f"Asset {asset_id} deleted successfully") + return None + + @router.get("") async def get_assets(request: Request, dao: DAO = Depends(get_dao), limit: int = 10, offset: int = 0) -> AssetsResponse: logger.info(f"get_assets called. Limit: {limit}, Offset: {offset}") diff --git a/repos/__pycache__/assets_repo.cpython-313.pyc b/repos/__pycache__/assets_repo.cpython-313.pyc index 317cb0e..3ad0ca8 100644 Binary files a/repos/__pycache__/assets_repo.cpython-313.pyc and b/repos/__pycache__/assets_repo.cpython-313.pyc differ diff --git a/repos/assets_repo.py b/repos/assets_repo.py index 1c00fd9..acbd33f 100644 --- a/repos/assets_repo.py +++ b/repos/assets_repo.py @@ -74,3 +74,7 @@ class AssetsRepo: doc["id"] = str(doc.pop("_id")) assets.append(Asset(**doc)) return assets + + async def delete_asset(self, asset_id: str) -> bool: + res = await self.collection.delete_one({"_id": ObjectId(asset_id)}) + return res.deleted_count > 0