diff --git a/graphgen/models/storage/graph/kuzu_storage.py b/graphgen/models/storage/graph/kuzu_storage.py index f2acf40c..00f55ac0 100644 --- a/graphgen/models/storage/graph/kuzu_storage.py +++ b/graphgen/models/storage/graph/kuzu_storage.py @@ -343,12 +343,12 @@ def upsert_edge( Note: We explicitly ensure nodes exist before merging the edge to avoid errors, although GraphGen generally creates nodes before edges. """ - # Ensure source node exists - if not self.has_node(source_node_id): - self.upsert_node(source_node_id, {}) - # Ensure target node exists - if not self.has_node(target_node_id): - self.upsert_node(target_node_id, {}) + # Ensure source node exists and target node exists + if not self.has_node(source_node_id) or not self.has_node(target_node_id): + print( + f"Cannot upsert edge {source_node_id}->{target_node_id} as one or both nodes do not exist." + ) + return try: json_data = json.dumps(edge_data, ensure_ascii=False) diff --git a/graphgen/models/storage/graph/networkx_storage.py b/graphgen/models/storage/graph/networkx_storage.py index 4635eb61..16d60a39 100644 --- a/graphgen/models/storage/graph/networkx_storage.py +++ b/graphgen/models/storage/graph/networkx_storage.py @@ -156,6 +156,14 @@ def update_node(self, node_id: str, node_data: dict[str, any]): def upsert_edge( self, source_node_id: str, target_node_id: str, edge_data: dict[str, any] ): + # Ensure both nodes exist before adding the edge + if not self._graph.has_node(source_node_id) or not self._graph.has_node( + target_node_id + ): + print( + f"Cannot upsert edge {source_node_id} -> {target_node_id} because one or both nodes do not exist." + ) + return self._graph.add_edge(source_node_id, target_node_id, **edge_data) def update_edge(