@@ -418,26 +418,36 @@ async def delete_node(self, label: NodeType, entry):
418
418
// Find node to be deleted using node ID
419
419
MATCH (deleted_node:{ self .project_name } :{ label .value } )-[:is_before]->(next_node)
420
420
WHERE deleted_node.id = $id
421
- MATCH (previous_node)-[:is_before]->(deleted_node)
421
+ MATCH (previous_node)-[r :is_before]->(deleted_node)
422
422
// Remove node
423
- DETACH (deleted_node)
423
+ DELETE r
424
424
// Rebuild relationships after deletion
425
425
CREATE (previous_node)-[:is_before]->(next_node)
426
426
"""
427
427
await get_current_transaction ().run (query , {"id" : entry })
428
428
# transfert child parent relations, and mark child nodes as modified
429
429
query = f"""
430
430
// Find relations to be removed using node ID
431
- MATCH (child_node)-[:is_child_of]->(deleted_node:{ self .project_name } :{ label .value } )
431
+ MATCH (child_node)-[r :is_child_of]->(deleted_node:{ self .project_name } :{ label .value } )
432
432
WHERE deleted_node.id = $id
433
433
MATCH (deleted_node)-[:is_child_of]->(parent_node)
434
- DETACH (deleted_node)
434
+ DELETE r
435
435
// transfer child
436
436
CREATE (child_node) -[:is_child_of]->(parent_node)
437
437
// mark modified
438
438
SET child_node.modified = $modified
439
439
"""
440
440
await get_current_transaction ().run (query , {"id" : entry , "modified" : modified })
441
+ # or if no transfer is needed, just mark modified
442
+ query = f"""
443
+ // Find relations to be removed using node ID
444
+ MATCH (child_node)-[r:is_child_of]->(deleted_node:{ self .project_name } :{ label .value } )
445
+ WHERE deleted_node.id = $id
446
+ DELETE r
447
+ // mark children as modified
448
+ SET child_node.modified = $modified
449
+ """
450
+ await get_current_transaction ().run (query , {"id" : entry , "modified" : modified })
441
451
# change label of node to be deleted
442
452
query = f"""
443
453
MATCH (deleted_node:{ self .project_name } :{ label .value } )
@@ -447,7 +457,7 @@ async def delete_node(self, label: NodeType, entry):
447
457
// and mark modification date also
448
458
SET deleted_node.modified = $modified
449
459
"""
450
- result = await get_current_transaction ().run (query , {"id" : entry })
460
+ result = await get_current_transaction ().run (query , {"id" : entry , "modified" : modified })
451
461
return await async_list (result )
452
462
453
463
async def get_all_nodes (self , label : Optional [NodeType ] = None , removed : bool = False ):
0 commit comments