11import logging
22from datetime import datetime , timedelta
3- from typing import Optional
43
54import sqlalchemy
65from sqlalchemy .ext .asyncio import AsyncSession
76
87from auth .tables import SiteUser , UserSession
8+ from auth .types import SiteUserData
99
1010
1111async def create_user_session (db_session : AsyncSession , session_id : str , computing_id : str ):
@@ -54,6 +54,7 @@ async def create_user_session(db_session: AsyncSession, session_id: str, computi
5454 )
5555 db_session .add (new_user_session )
5656
57+
5758async def remove_user_session (db_session : AsyncSession , session_id : str ) -> dict :
5859 query = sqlalchemy .select (UserSession ).where (UserSession .session_id == session_id )
5960 user_session = await db_session .scalars (query )
@@ -76,7 +77,7 @@ async def task_clean_expired_user_sessions(db_session: AsyncSession):
7677
7778
7879# get the site user given a session ID; returns None when session is invalid
79- async def get_site_user (db_session : AsyncSession , session_id : str ) -> None | dict :
80+ async def get_site_user (db_session : AsyncSession , session_id : str ) -> None | SiteUserData :
8081 query = (
8182 sqlalchemy
8283 .select (UserSession )
@@ -95,16 +96,20 @@ async def get_site_user(db_session: AsyncSession, session_id: str) -> None | dic
9596 if user is None :
9697 return None
9798
98- return {
99- "computing_id" : user_session .computing_id ,
100- "first_logged_in" : user .first_logged_in .isoformat (),
101- "last_logged_in" : user .last_logged_in .isoformat (),
102- "profile_picture_url" : user .profile_picture_url
103- }
99+ return SiteUserData (
100+ user_session .computing_id ,
101+ user .first_logged_in .isoformat (),
102+ user .last_logged_in .isoformat (),
103+ user .profile_picture_url
104+ )
104105
105106
106107# update the optional user info for a given site user (e.g., display name, profile picture, ...)
107- async def update_site_user (db_session : AsyncSession , session_id : str , profile_picture_url : str ) -> None | dict :
108+ async def update_site_user (
109+ db_session : AsyncSession ,
110+ session_id : str ,
111+ profile_picture_url : str
112+ ) -> None | SiteUserData :
108113 query = (
109114 sqlalchemy
110115 .select (UserSession )
@@ -118,16 +123,16 @@ async def update_site_user(db_session: AsyncSession, session_id: str, profile_pi
118123 sqlalchemy
119124 .update (SiteUser )
120125 .where (SiteUser .computing_id == user_session .computing_id )
121- .values (profile_picture_url = profile_picture_url )
126+ .values (profile_picture_url = profile_picture_url )
122127 .returning (SiteUser ) # returns all columns of SiteUser
123128 )
124129 user = await db_session .scalar (query )
125130 if user is None :
126131 return None
127132
128- return {
129- "computing_id" : user_session .computing_id ,
130- "first_logged_in" : user .first_logged_in .isoformat (),
131- "last_logged_in" : user .last_logged_in .isoformat (),
132- "profile_picture_url" : user .profile_picture_url
133- }
133+ return SiteUserData (
134+ user_session .computing_id ,
135+ user .first_logged_in .isoformat (),
136+ user .last_logged_in .isoformat (),
137+ user .profile_picture_url
138+ )
0 commit comments