add batch delete capabilities (#813)
* add batch delete capabilities * use session for delete queries
This commit is contained in:
parent
3ad4ea2ea0
commit
0c01417e1f
4 changed files with 16 additions and 11 deletions
|
|
@ -118,7 +118,7 @@ class Node(BaseModel, ABC):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@classmethod
|
@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:
|
if driver.provider == GraphProvider.FALKORDB:
|
||||||
for label in ['Entity', 'Episodic', 'Community']:
|
for label in ['Entity', 'Episodic', 'Community']:
|
||||||
await driver.execute_query(
|
await driver.execute_query(
|
||||||
|
|
@ -129,13 +129,18 @@ class Node(BaseModel, ABC):
|
||||||
group_id=group_id,
|
group_id=group_id,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
await driver.execute_query(
|
async with driver.session() as session:
|
||||||
"""
|
await session.run(
|
||||||
MATCH (n:Entity|Episodic|Community {group_id: $group_id})
|
"""
|
||||||
DETACH DELETE n
|
MATCH (n:Entity|Episodic|Community {group_id: $group_id})
|
||||||
""",
|
CALL {
|
||||||
group_id=group_id,
|
WITH n
|
||||||
)
|
DETACH DELETE n
|
||||||
|
} IN TRANSACTIONS OF $batch_size ROWS
|
||||||
|
""",
|
||||||
|
group_id=group_id,
|
||||||
|
batch_size=batch_size,
|
||||||
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def get_by_uuid(cls, driver: GraphDriver, uuid: str): ...
|
async def get_by_uuid(cls, driver: GraphDriver, uuid: str): ...
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ class ComparisonOperator(Enum):
|
||||||
|
|
||||||
|
|
||||||
class DateFilter(BaseModel):
|
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(
|
comparison_operator: ComparisonOperator = Field(
|
||||||
description='Comparison operator for date filter'
|
description='Comparison operator for date filter'
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
[project]
|
[project]
|
||||||
name = "graphiti-core"
|
name = "graphiti-core"
|
||||||
description = "A temporal graph building library"
|
description = "A temporal graph building library"
|
||||||
version = "0.18.3"
|
version = "0.18.4"
|
||||||
authors = [
|
authors = [
|
||||||
{ name = "Paul Paliychuk", email = "paul@getzep.com" },
|
{ name = "Paul Paliychuk", email = "paul@getzep.com" },
|
||||||
{ name = "Preston Rasmussen", email = "preston@getzep.com" },
|
{ name = "Preston Rasmussen", email = "preston@getzep.com" },
|
||||||
|
|
|
||||||
2
uv.lock
generated
2
uv.lock
generated
|
|
@ -746,7 +746,7 @@ wheels = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "graphiti-core"
|
name = "graphiti-core"
|
||||||
version = "0.18.3"
|
version = "0.18.4"
|
||||||
source = { editable = "." }
|
source = { editable = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "diskcache" },
|
{ name = "diskcache" },
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue