From e69b72cbe153eb07308f741471f65346a477c28c Mon Sep 17 00:00:00 2001 From: gilesb Date: Thu, 8 Jan 2026 23:21:20 +0000 Subject: [PATCH] Add ipfs_cid support to asset update endpoint Allow updating asset's IPFS CID via PATCH endpoint. Pins content on IPFS when CID is provided. Co-Authored-By: Claude Opus 4.5 --- server.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server.py b/server.py index 030465a..3182cb1 100644 --- a/server.py +++ b/server.py @@ -143,6 +143,7 @@ class UpdateAssetRequest(BaseModel): tags: Optional[list[str]] = None metadata: Optional[dict] = None origin: Optional[dict] = None + ipfs_cid: Optional[str] = None # IPFS content identifier # ============ Storage (Database) ============ @@ -1596,6 +1597,15 @@ async def update_asset(name: str, req: UpdateAssetRequest, user: User = Depends( updates["metadata"] = {**asset.get("metadata", {}), **req.metadata} if req.origin is not None: updates["origin"] = req.origin + if req.ipfs_cid is not None: + updates["ipfs_cid"] = req.ipfs_cid + # Pin on IPFS + try: + import ipfs_client + if ipfs_client.is_available(): + ipfs_client.pin(req.ipfs_cid) + except Exception as e: + logger.warning(f"Failed to pin IPFS content {req.ipfs_cid}: {e}") # Update asset in database updated_asset = await db.update_asset(name, updates)