Skip to content

Commit 02dcafe

Browse files
fix: skip upserting edges when nodes don't exist (#158)
1 parent 77d51d8 commit 02dcafe

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

graphgen/models/storage/graph/kuzu_storage.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -343,12 +343,12 @@ def upsert_edge(
343343
Note: We explicitly ensure nodes exist before merging the edge to avoid errors,
344344
although GraphGen generally creates nodes before edges.
345345
"""
346-
# Ensure source node exists
347-
if not self.has_node(source_node_id):
348-
self.upsert_node(source_node_id, {})
349-
# Ensure target node exists
350-
if not self.has_node(target_node_id):
351-
self.upsert_node(target_node_id, {})
346+
# Ensure source node exists and target node exists
347+
if not self.has_node(source_node_id) or not self.has_node(target_node_id):
348+
print(
349+
f"Cannot upsert edge {source_node_id}->{target_node_id} as one or both nodes do not exist."
350+
)
351+
return
352352

353353
try:
354354
json_data = json.dumps(edge_data, ensure_ascii=False)

graphgen/models/storage/graph/networkx_storage.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,14 @@ def update_node(self, node_id: str, node_data: dict[str, any]):
156156
def upsert_edge(
157157
self, source_node_id: str, target_node_id: str, edge_data: dict[str, any]
158158
):
159+
# Ensure both nodes exist before adding the edge
160+
if not self._graph.has_node(source_node_id) or not self._graph.has_node(
161+
target_node_id
162+
):
163+
print(
164+
f"Cannot upsert edge {source_node_id} -> {target_node_id} because one or both nodes do not exist."
165+
)
166+
return
159167
self._graph.add_edge(source_node_id, target_node_id, **edge_data)
160168

161169
def update_edge(

0 commit comments

Comments
 (0)