File tree Expand file tree Collapse file tree 4 files changed +29
-8
lines changed Expand file tree Collapse file tree 4 files changed +29
-8
lines changed Original file line number Diff line number Diff line change @@ -515,9 +515,22 @@ async def list_sessions(
515
515
.filter (StorageSession .user_id == user_id )
516
516
.all ()
517
517
)
518
+
519
+ # Fetch states from storage
520
+ storage_app_state = sql_session .get (StorageAppState , (app_name ))
521
+ storage_user_state = sql_session .get (
522
+ StorageUserState , (app_name , user_id )
523
+ )
524
+
525
+ app_state = storage_app_state .state if storage_app_state else {}
526
+ user_state = storage_user_state .state if storage_user_state else {}
527
+
518
528
sessions = []
519
529
for storage_session in results :
520
- sessions .append (storage_session .to_session ())
530
+ session_state = storage_session .state
531
+ merged_state = _merge_state (app_state , user_state , session_state )
532
+
533
+ sessions .append (storage_session .to_session (state = merged_state ))
521
534
return ListSessionsResponse (sessions = sessions )
522
535
523
536
@override
Original file line number Diff line number Diff line change @@ -224,7 +224,7 @@ def _list_sessions_impl(
224
224
for session in self .sessions [app_name ][user_id ].values ():
225
225
copied_session = copy .deepcopy (session )
226
226
copied_session .events = []
227
- copied_session . state = {}
227
+ copied_session = self . _merge_state ( app_name , user_id , copied_session )
228
228
sessions_without_events .append (copied_session )
229
229
return ListSessionsResponse (sessions = sessions_without_events )
230
230
Original file line number Diff line number Diff line change @@ -280,24 +280,28 @@ async def list_sessions(
280
280
parsed_user_id = urllib .parse .quote (f'''"{ user_id } "''' , safe = '' )
281
281
path = path + f'?filter=user_id={ parsed_user_id } '
282
282
283
- api_response = await api_client .async_request (
283
+ list_sessions_api_response = await api_client .async_request (
284
284
http_method = 'GET' ,
285
285
path = path ,
286
286
request_dict = {},
287
287
)
288
- api_response = _convert_api_response (api_response )
288
+ list_sessions_api_response = _convert_api_response (
289
+ list_sessions_api_response
290
+ )
289
291
290
292
# Handles empty response case
291
- if not api_response or api_response .get ('httpHeaders' , None ):
293
+ if not list_sessions_api_response or list_sessions_api_response .get (
294
+ 'httpHeaders' , None
295
+ ):
292
296
return ListSessionsResponse ()
293
297
294
298
sessions = []
295
- for api_session in api_response ['sessions' ]:
299
+ for api_session in list_sessions_api_response ['sessions' ]:
296
300
session = Session (
297
301
app_name = app_name ,
298
302
user_id = user_id ,
299
303
id = api_session ['name' ].split ('/' )[- 1 ],
300
- state = {} ,
304
+ state = api_session . get ( 'sessionState' , {}) ,
301
305
last_update_time = isoparse (api_session ['updateTime' ]).timestamp (),
302
306
)
303
307
sessions .append (session )
Original file line number Diff line number Diff line change @@ -106,7 +106,10 @@ async def test_create_and_list_sessions(service_type):
106
106
session_ids = ['session' + str (i ) for i in range (5 )]
107
107
for session_id in session_ids :
108
108
await session_service .create_session (
109
- app_name = app_name , user_id = user_id , session_id = session_id
109
+ app_name = app_name ,
110
+ user_id = user_id ,
111
+ session_id = session_id ,
112
+ state = {'key' : 'value' + session_id },
110
113
)
111
114
112
115
list_sessions_response = await session_service .list_sessions (
@@ -115,6 +118,7 @@ async def test_create_and_list_sessions(service_type):
115
118
sessions = list_sessions_response .sessions
116
119
for i in range (len (sessions )):
117
120
assert sessions [i ].id == session_ids [i ]
121
+ assert sessions [i ].state == {'key' : 'value' + session_ids [i ]}
118
122
119
123
120
124
@pytest .mark .asyncio
You can’t perform that action at this time.
0 commit comments