feat: Add delete group endpoint (#132)

* feat: Add delete group endpoint

* chore: Version bump

* chore: improve not found error handling
This commit is contained in:
Pavlo Paliychuk 2024-09-22 14:03:32 -04:00 committed by GitHub
parent 02ff178769
commit d8c49c1c0a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 23 additions and 1 deletions

View file

@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "graphiti-core" name = "graphiti-core"
version = "0.3.3" version = "0.3.4"
description = "A temporal graph building library" description = "A temporal graph building library"
authors = [ authors = [
"Paul Paliychuk <paul@getzep.com>", "Paul Paliychuk <paul@getzep.com>",

View file

@ -90,6 +90,12 @@ async def delete_entity_edge(uuid: str, graphiti: ZepGraphitiDep):
return Result(message='Entity Edge deleted', success=True) return Result(message='Entity Edge deleted', success=True)
@router.delete('/group/{group_id}', status_code=status.HTTP_200_OK)
async def delete_group(group_id: str, graphiti: ZepGraphitiDep):
await graphiti.delete_group(group_id)
return Result(message='Group deleted', success=True)
@router.delete('/episode/{uuid}', status_code=status.HTTP_200_OK) @router.delete('/episode/{uuid}', status_code=status.HTTP_200_OK)
async def delete_episode(uuid: str, graphiti: ZepGraphitiDep): async def delete_episode(uuid: str, graphiti: ZepGraphitiDep):
await graphiti.delete_episodic_node(uuid) await graphiti.delete_episodic_node(uuid)

View file

@ -33,6 +33,22 @@ class ZepGraphiti(Graphiti):
except EdgeNotFoundError as e: except EdgeNotFoundError as e:
raise HTTPException(status_code=404, detail=e.message) from e raise HTTPException(status_code=404, detail=e.message) from e
async def delete_group(self, group_id: str):
try:
edges = await EntityEdge.get_by_group_ids(self.driver, [group_id])
nodes = await EntityNode.get_by_group_ids(self.driver, [group_id])
episodes = await EpisodicNode.get_by_group_ids(self.driver, [group_id])
for edge in edges:
await edge.delete(self.driver)
for node in nodes:
await node.delete(self.driver)
for episode in episodes:
await episode.delete(self.driver)
except EdgeNotFoundError as e:
raise HTTPException(status_code=404, detail=e.message) from e
except NodeNotFoundError as e:
raise HTTPException(status_code=404, detail=e.message) from e
async def delete_entity_edge(self, uuid: str): async def delete_entity_edge(self, uuid: str):
try: try:
edge = await EntityEdge.get_by_uuid(self.driver, uuid) edge = await EntityEdge.get_by_uuid(self.driver, uuid)