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,
)
| 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: |
nothing calls this directly
no test coverage detected