MCPcopy
hub / github.com/SciPhi-AI/R2R / update

Method update

py/core/providers/database/graphs.py:245–321  ·  view source on GitHub ↗

Update an entity in the specified store.

(
        self,
        entity_id: UUID,
        store_type: StoreType,
        name: Optional[str] = None,
        description: Optional[str] = None,
        description_embedding: Optional[list[float] | str] = None,
        category: Optional[str] = None,
        metadata: Optional[dict] = None,
    )

Source from the content-addressed store, hash-verified

243 return entities, count
244
245 async def update(
246 self,
247 entity_id: UUID,
248 store_type: StoreType,
249 name: Optional[str] = None,
250 description: Optional[str] = None,
251 description_embedding: Optional[list[float] | str] = None,
252 category: Optional[str] = None,
253 metadata: Optional[dict] = None,
254 ) -> Entity:
255 """Update an entity in the specified store."""
256 table_name = self._get_entity_table_for_store(store_type)
257 update_fields = []
258 params: list[Any] = []
259 param_index = 1
260
261 if isinstance(metadata, str):
262 with contextlib.suppress(json.JSONDecodeError):
263 metadata = json.loads(metadata)
264
265 if name is not None:
266 update_fields.append(f"name = ${param_index}")
267 params.append(name)
268 param_index += 1
269
270 if description is not None:
271 update_fields.append(f"description = ${param_index}")
272 params.append(description)
273 param_index += 1
274
275 if description_embedding is not None:
276 update_fields.append(f"description_embedding = ${param_index}")
277 params.append(description_embedding)
278 param_index += 1
279
280 if category is not None:
281 update_fields.append(f"category = ${param_index}")
282 params.append(category)
283 param_index += 1
284
285 if metadata is not None:
286 update_fields.append(f"metadata = ${param_index}")
287 params.append(json.dumps(metadata))
288 param_index += 1
289
290 if not update_fields:
291 raise R2RException(status_code=400, message="No fields to update")
292
293 update_fields.append("updated_at = NOW()")
294 params.append(entity_id)
295
296 query = f"""
297 UPDATE {self._get_table_name(table_name)}
298 SET {", ".join(update_fields)}
299 WHERE id = ${param_index}\
300 RETURNING id, name, category, description, parent_id, chunk_ids, metadata
301 """
302 try:

Callers

nothing calls this directly

Calls 5

_get_table_nameMethod · 0.95
R2RExceptionClass · 0.90
EntityClass · 0.90
fetchrow_queryMethod · 0.45

Tested by

no test coverage detected