diff --git a/cognee/modules/graph/methods/upsert_edges.py b/cognee/modules/graph/methods/upsert_edges.py index 8e0bfa728..d17367f44 100644 --- a/cognee/modules/graph/methods/upsert_edges.py +++ b/cognee/modules/graph/methods/upsert_edges.py @@ -29,29 +29,50 @@ async def upsert_edges( # Set the session-level RLS variable await set_current_user(session, user_id) - upsert_statement = ( - insert(Edge) - .values( - [ + edges_to_add = [] + + for edge in edges: + edges_to_add.append( + { + "id": uuid5( + NAMESPACE_OID, + str(user_id) + str(dataset_id) + str(edge[0]) + str(edge[2]) + str(edge[1]), + ), + "slug": generate_edge_id(edge[2]), + "user_id": user_id, + "data_id": data_id, + "dataset_id": dataset_id, + "source_node_id": edge[0], + "destination_node_id": edge[1], + "relationship_name": edge[2], + "label": edge[2], + "attributes": jsonable_encoder(edge[3]), + } + ) + + if len(edge) == 4 and "edge_text" in edge[3]: + edge_text = edge[3]["edge_text"] + + edges_to_add.append( { "id": uuid5( NAMESPACE_OID, - str(user_id) + str(dataset_id) + str(edge[0]) + str(edge[2]) + str(edge[1]), + str(user_id) + str(dataset_id) + str(edge_text), ), - "slug": generate_edge_id(edge[2]), + "slug": generate_edge_id(edge_text), "user_id": user_id, "data_id": data_id, "dataset_id": dataset_id, "source_node_id": edge[0], "destination_node_id": edge[1], - "relationship_name": edge[2], - "label": edge[2], - "props": jsonable_encoder(edge[3]), + "relationship_name": edge_text, + "label": edge_text, + "attributes": jsonable_encoder(edge[3]), } - for edge in edges - ] - ) - .on_conflict_do_nothing(index_elements=["id"]) + ) + + upsert_statement = ( + insert(Edge).values(edges_to_add).on_conflict_do_nothing(index_elements=["id"]) ) await session.execute(upsert_statement) diff --git a/cognee/modules/graph/models/Edge.py b/cognee/modules/graph/models/Edge.py index 0536601dd..c04b205e6 100644 --- a/cognee/modules/graph/models/Edge.py +++ b/cognee/modules/graph/models/Edge.py @@ -32,7 +32,7 @@ class Edge(Base): relationship_name: Mapped[str | None] = mapped_column(String(255), nullable=False) label: Mapped[str | None] = mapped_column(String(255)) - props: Mapped[dict | None] = mapped_column(JSON) + attributes: Mapped[dict | None] = mapped_column(JSON) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), nullable=False diff --git a/cognee/modules/graph/models/Node.py b/cognee/modules/graph/models/Node.py index ebce02aac..662365264 100644 --- a/cognee/modules/graph/models/Node.py +++ b/cognee/modules/graph/models/Node.py @@ -31,7 +31,7 @@ class Node(Base): type: Mapped[str] = mapped_column(String(255), nullable=False) indexed_fields: Mapped[list] = mapped_column(JSON, nullable=False) - # props: Mapped[dict] = mapped_column(JSON) + attributes: Mapped[dict | None] = mapped_column(JSON) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(timezone.utc), nullable=False