@@ -202,6 +202,23 @@ def get_entity_history(
202
202
self ._verify_response (res )
203
203
return res .json ()
204
204
205
+ def get_attribute_stats (self ):
206
+ res = self ._session .get (f"{ self .base_url } /attribute-stats" )
207
+ self ._verify_response (res )
208
+
209
+ return res .json ()
210
+
211
+ def sync (self , timeout : Optional [int ] = None ):
212
+ params = {}
213
+
214
+ if timeout is not None :
215
+ params ["timeout" ] = timeout
216
+
217
+ res = self ._session .get (f"{ self .base_url } /sync" , params = params )
218
+ self ._verify_response (res )
219
+
220
+ return res .json ()
221
+
205
222
def query (
206
223
self ,
207
224
query : Union [str , Query ],
@@ -230,9 +247,35 @@ def query(
230
247
self ._verify_response (res )
231
248
return res .json ()
232
249
233
- def await_transaction (self , transaction_id : int ) -> None :
234
- self ._session .get (f"{ self .base_url } /await-tx" , params = {"txId" : transaction_id })
235
- logger .info ("Transaction completed [txId=%s]" , transaction_id )
250
+ def await_transaction (self , tx_id : int , timeout : Optional [int ] = None ) -> None :
251
+ params = {"txId" : tx_id }
252
+
253
+ if timeout is not None :
254
+ params ["timeout" ] = timeout
255
+
256
+ self ._session .get (f"{ self .base_url } /await-tx" , params = params )
257
+
258
+ def await_transaction_time (self , tx_time : datetime , timeout : Optional [int ] = None ) -> None :
259
+ params = {"tx-time" : tx_time .isoformat ()}
260
+
261
+ if timeout is not None :
262
+ params ["timeout" ] = str (timeout )
263
+
264
+ self ._session .get (f"{ self .base_url } /await-tx-time" , params = params )
265
+
266
+ def get_transaction_log (self , after_tx_id : Optional [int ] = None , with_ops : Optional [bool ] = None ):
267
+ params = {}
268
+
269
+ if after_tx_id is not None :
270
+ params ["after-tx-id" ] = str (after_tx_id )
271
+
272
+ if with_ops is not None :
273
+ params ["with-ops?" ] = str (with_ops ).lower ()
274
+
275
+ res = self ._session .get (f"{ self .base_url } /tx-log" , params = params )
276
+ self ._verify_response (res )
277
+
278
+ return res .json ()
236
279
237
280
def submit_transaction (self , transaction : Union [Transaction , List ]) -> None :
238
281
if isinstance (transaction , list ):
@@ -247,6 +290,42 @@ def submit_transaction(self, transaction: Union[Transaction, List]) -> None:
247
290
self ._verify_response (res )
248
291
self .await_transaction (res .json ()["txId" ])
249
292
293
+ def get_transaction_committed (self , tx_id : int ):
294
+ res = self ._session .get (f"{ self .base_url } /tx-committed" , params = {"tx-id" : tx_id })
295
+
296
+ self ._verify_response (res )
297
+ return res .json ()
298
+
299
+ def get_latest_completed_transaction (self ):
300
+ res = self ._session .get (f"{ self .base_url } /latest-completed-tx" )
301
+
302
+ self ._verify_response (res )
303
+ return res .json ()
304
+
305
+ def get_latest_submitted_transaction (self ):
306
+ res = self ._session .get (f"{ self .base_url } /latest-submitted-tx" )
307
+
308
+ self ._verify_response (res )
309
+ return res .json ()
310
+
311
+ def get_active_queries (self ):
312
+ res = self ._session .get (f"{ self .base_url } /active-queries" )
313
+
314
+ self ._verify_response (res )
315
+ return res .json ()
316
+
317
+ def get_recent_queries (self ):
318
+ res = self ._session .get (f"{ self .base_url } /recent-queries" )
319
+
320
+ self ._verify_response (res )
321
+ return res .json ()
322
+
323
+ def get_slowest_queries (self ):
324
+ res = self ._session .get (f"{ self .base_url } /slowest-queries" )
325
+
326
+ self ._verify_response (res )
327
+ return res .json ()
328
+
250
329
251
330
class XTDBSession :
252
331
def __init__ (self , base_url : str ):
0 commit comments