Skip to content

Commit 68a5fcf

Browse files
committed
add hfid support to Relationshipmanager add, extend & remove methods
1 parent c4c8d7e commit 68a5fcf

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

infrahub_sdk/node.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

595603
class 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

Comments
 (0)