@@ -31,11 +31,14 @@ class Graph():
31
31
32
32
def __init__ (self , name : str ) -> None :
33
33
self .name = name
34
- self .db = FalkorDB (host = os .getenv ('FALKORDB_HOST' , 'localhost' ),
35
- port = os .getenv ('FALKORDB_PORT' , 6379 ),
36
- username = os .getenv ('FALKORDB_USERNAME' , None ),
37
- password = os .getenv ('FALKORDB_PASSWORD' , None ))
38
- self .g = self .db .select_graph (name )
34
+ self .db = FalkorDB (host = os .getenv ('FALKORDB_HOST' , 'localhost' ),
35
+ port = os .getenv ('FALKORDB_PORT' , 6379 ),
36
+ username = os .getenv ('FALKORDB_USERNAME' , None ),
37
+ password = os .getenv ('FALKORDB_PASSWORD' , None ))
38
+ self .g = self .db .select_graph (name )
39
+
40
+ # Initialize the backlog as disabled by default
41
+ self .backlog = None
39
42
40
43
# create indicies
41
44
@@ -85,9 +88,50 @@ def delete(self) -> None:
85
88
"""
86
89
self .g .delete ()
87
90
91
+ def enable_backlog (self ) -> None :
92
+ """
93
+ Enables the backlog by initializing an empty list.
94
+ """
95
+
96
+ self .backlog = []
97
+
98
+ def disable_backlog (self ) -> None :
99
+ """
100
+ Disables the backlog by setting it to None.
101
+ """
102
+
103
+ self .backlog = None
88
104
89
105
def _query (self , q : str , params : dict ) -> QueryResult :
90
- return self .g .query (q , params )
106
+ """
107
+ Executes a query on the graph database and logs changes to the backlog if any.
108
+
109
+ Args:
110
+ q (str): The query string to execute.
111
+ params (dict): The parameters for the query.
112
+
113
+ Returns:
114
+ QueryResult: The result of the query execution.
115
+ """
116
+
117
+ result_set = self .g .query (q , params )
118
+
119
+ if self .backlog is not None :
120
+ # Check if any change occurred in the query results
121
+ change_detected = any (
122
+ getattr (result_set , attr ) > 0
123
+ for attr in [
124
+ 'relationships_deleted' , 'nodes_deleted' , 'labels_added' ,
125
+ 'labels_removed' , 'nodes_created' , 'properties_set' ,
126
+ 'properties_removed' , 'relationships_created'
127
+ ]
128
+ )
129
+
130
+ # Append the query and parameters to the backlog if changes occurred
131
+ if change_detected :
132
+ self .backlog .append ((q , params ))
133
+
134
+ return result_set
91
135
92
136
def get_sub_graph (self , l : int ) -> dict :
93
137
0 commit comments