@@ -332,6 +332,63 @@ async def test_sqlstore_pagination_error_handling():
332332 )
333333
334334
335+ async def test_where_operator_gt_and_update_delete ():
336+ with TemporaryDirectory () as tmp_dir :
337+ db_path = tmp_dir + "/test.db"
338+ store = SqlAlchemySqlStoreImpl (SqliteSqlStoreConfig (db_path = db_path ))
339+
340+ await store .create_table (
341+ "items" ,
342+ {
343+ "id" : ColumnType .INTEGER ,
344+ "value" : ColumnType .INTEGER ,
345+ "name" : ColumnType .STRING ,
346+ },
347+ )
348+
349+ await store .insert ("items" , {"id" : 1 , "value" : 10 , "name" : "one" })
350+ await store .insert ("items" , {"id" : 2 , "value" : 20 , "name" : "two" })
351+ await store .insert ("items" , {"id" : 3 , "value" : 30 , "name" : "three" })
352+
353+ result = await store .fetch_all ("items" , where = {"value" : {">" : 15 }})
354+ assert {r ["id" ] for r in result .data } == {2 , 3 }
355+
356+ row = await store .fetch_one ("items" , where = {"value" : {">=" : 30 }})
357+ assert row ["id" ] == 3
358+
359+ await store .update ("items" , {"name" : "small" }, {"value" : {"<" : 25 }})
360+ rows = (await store .fetch_all ("items" )).data
361+ names = {r ["id" ]: r ["name" ] for r in rows }
362+ assert names [1 ] == "small"
363+ assert names [2 ] == "small"
364+ assert names [3 ] == "three"
365+
366+ await store .delete ("items" , {"id" : {"==" : 2 }})
367+ rows_after = (await store .fetch_all ("items" )).data
368+ assert {r ["id" ] for r in rows_after } == {1 , 3 }
369+
370+
371+ async def test_where_operator_edge_cases ():
372+ with TemporaryDirectory () as tmp_dir :
373+ db_path = tmp_dir + "/test.db"
374+ store = SqlAlchemySqlStoreImpl (SqliteSqlStoreConfig (db_path = db_path ))
375+
376+ await store .create_table (
377+ "events" ,
378+ {"id" : ColumnType .STRING , "ts" : ColumnType .INTEGER },
379+ )
380+
381+ base = 1024
382+ await store .insert ("events" , {"id" : "a" , "ts" : base - 10 })
383+ await store .insert ("events" , {"id" : "b" , "ts" : base + 10 })
384+
385+ row = await store .fetch_one ("events" , where = {"id" : "a" })
386+ assert row ["id" ] == "a"
387+
388+ with pytest .raises (ValueError , match = "Unsupported operator" ):
389+ await store .fetch_all ("events" , where = {"ts" : {"!=" : base }})
390+
391+
335392async def test_sqlstore_pagination_custom_key_column ():
336393 """Test pagination with custom primary key column (not 'id')."""
337394 with TemporaryDirectory () as tmp_dir :
0 commit comments