add batch delete capabilities (#813)

* add batch delete capabilities

* use session for delete queries
This commit is contained in:
Preston Rasmussen 2025-08-07 15:51:30 -04:00 committed by GitHub
parent 3ad4ea2ea0
commit 0c01417e1f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 16 additions and 11 deletions

View file

@ -118,7 +118,7 @@ class Node(BaseModel, ABC):
return False
@classmethod
async def delete_by_group_id(cls, driver: GraphDriver, group_id: str):
async def delete_by_group_id(cls, driver: GraphDriver, group_id: str, batch_size: int = 100):
if driver.provider == GraphProvider.FALKORDB:
for label in ['Entity', 'Episodic', 'Community']:
await driver.execute_query(
@ -129,13 +129,18 @@ class Node(BaseModel, ABC):
group_id=group_id,
)
else:
await driver.execute_query(
"""
MATCH (n:Entity|Episodic|Community {group_id: $group_id})
DETACH DELETE n
""",
group_id=group_id,
)
async with driver.session() as session:
await session.run(
"""
MATCH (n:Entity|Episodic|Community {group_id: $group_id})
CALL {
WITH n
DETACH DELETE n
} IN TRANSACTIONS OF $batch_size ROWS
""",
group_id=group_id,
batch_size=batch_size,
)
@classmethod
async def get_by_uuid(cls, driver: GraphDriver, uuid: str): ...

View file

@ -31,7 +31,7 @@ class ComparisonOperator(Enum):
class DateFilter(BaseModel):
date: datetime = Field(description='A datetime to filter on')
date: datetime | None = Field(description='A datetime to filter on')
comparison_operator: ComparisonOperator = Field(
description='Comparison operator for date filter'
)

View file

@ -1,7 +1,7 @@
[project]
name = "graphiti-core"
description = "A temporal graph building library"
version = "0.18.3"
version = "0.18.4"
authors = [
{ name = "Paul Paliychuk", email = "paul@getzep.com" },
{ name = "Preston Rasmussen", email = "preston@getzep.com" },

2
uv.lock generated
View file

@ -746,7 +746,7 @@ wheels = [
[[package]]
name = "graphiti-core"
version = "0.18.3"
version = "0.18.4"
source = { editable = "." }
dependencies = [
{ name = "diskcache" },