Skip to content

Commit e6c5c9a

Browse files
authored
Fix CREATE_SESSION_NODE_QUERY (#378)
* Fix CREATE_SESSION_NODE_QUERY * Add test * Update CHANGELOG
1 parent 65a85c7 commit e6c5c9a

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## Next
44

5+
### Fixed
6+
7+
- Fixed a bug where Session nodes were duplicated.
8+
59
## 1.8.0
610

711
### Added

src/neo4j_graphrag/message_history.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@
2626
)
2727

2828
CREATE_SESSION_NODE_QUERY = (
29-
"MERGE (s:`{node_label}` {{id:$session_id, createdAt: datetime()}})"
29+
"MERGE (s:`{node_label}` {{id:$session_id}}) "
30+
"ON CREATE SET s.createdAt=datetime() "
31+
"ON MATCH SET s.updatedAt=datetime() "
3032
)
3133

3234
DELETE_SESSION_AND_MESSAGES_QUERY = (

tests/e2e/test_message_history_e2e.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,18 @@ def test_neo4j_message_window_size(driver: neo4j.Driver) -> None:
136136
== "I'd be happy to help you find the perfect car."
137137
)
138138
assert message_history.messages[0]["role"] == "assistant"
139+
140+
141+
def test_neo4j_message_history_session_id_unique(driver: neo4j.Driver) -> None:
142+
driver.execute_query(query_="MATCH (n) DETACH DELETE n;")
143+
Neo4jMessageHistory(session_id="123", driver=driver)
144+
Neo4jMessageHistory(session_id="123", driver=driver)
145+
146+
results = driver.execute_query(
147+
query_="MATCH (s:`Session`) WHERE s.id = '123' RETURN s"
148+
)
149+
records = results.records
150+
assert len(records) == 1
151+
session = records[0]["s"]
152+
assert session.get("createdAt") is not None
153+
assert session.get("updatedAt") is not None

0 commit comments

Comments
 (0)