@@ -569,7 +569,7 @@ def add(self, data: str | RelatedNode | dict) -> None:
569569 raise UninitializedError ("Must call fetch() on RelationshipManager before editing members" )
570570 new_node = RelatedNode (schema = self .schema , client = self .client , branch = self .branch , data = data )
571571
572- if new_node .id and new_node .id not in self .peer_ids :
572+ if ( new_node .id and new_node .id not in self .peer_ids ) or ( new_node . hfid and new_node . hfid not in self . peer_hfids ) :
573573 self .peers .append (new_node )
574574 self ._has_update = True
575575
@@ -591,6 +591,14 @@ def remove(self, data: str | RelatedNode | dict) -> None:
591591 self .peers .pop (idx )
592592 self ._has_update = True
593593
594+ elif node_to_remove .hfid and node_to_remove .hfid in self .peer_hfids :
595+ idx = self .peer_hfids .index (node_to_remove .hfid )
596+ if self .peers [idx ].hfid != node_to_remove .hfid :
597+ raise IndexError (f"Unexpected situation, the node with the index { idx } should be { node_to_remove .hfid } " )
598+
599+ self .peers .pop (idx )
600+ self ._has_update = True
601+
594602
595603class RelationshipManagerSync (RelationshipManagerBase ):
596604 """Manages relationships of a node in a synchronous context."""
@@ -664,7 +672,7 @@ def add(self, data: str | RelatedNodeSync | dict) -> None:
664672 raise UninitializedError ("Must call fetch() on RelationshipManager before editing members" )
665673 new_node = RelatedNodeSync (schema = self .schema , client = self .client , branch = self .branch , data = data )
666674
667- if new_node .id and new_node .id not in self .peer_ids :
675+ if ( new_node .id and new_node .id not in self .peer_ids ) or ( new_node . hfid and new_node . hfid not in self . peer_hfids ) :
668676 self .peers .append (new_node )
669677 self ._has_update = True
670678
@@ -682,6 +690,13 @@ def remove(self, data: str | RelatedNodeSync | dict) -> None:
682690 idx = self .peer_ids .index (node_to_remove .id )
683691 if self .peers [idx ].id != node_to_remove .id :
684692 raise IndexError (f"Unexpected situation, the node with the index { idx } should be { node_to_remove .id } " )
693+ self .peers .pop (idx )
694+ self ._has_update = True
695+
696+ elif node_to_remove .hfid and node_to_remove .hfid in self .peer_hfids :
697+ idx = self .peer_hfids .index (node_to_remove .hfid )
698+ if self .peers [idx ].hfid != node_to_remove .hfid :
699+ raise IndexError (f"Unexpected situation, the node with the index { idx } should be { node_to_remove .hfid } " )
685700
686701 self .peers .pop (idx )
687702 self ._has_update = True
@@ -1268,7 +1283,7 @@ async def generate_query_data(
12681283 exclude = exclude ,
12691284 prefetch_relationships = prefetch_relationships ,
12701285 inherited = True ,
1271- property = property ,
1286+ property = propertchildy ,
12721287 )
12731288 )
12741289
0 commit comments