22from uuid import UUID
33
44from sqlalchemy .ext .asyncio import AsyncSession
5+ from sqlalchemy .orm import selectinload
56from sqlmodel import select
67
78from app .models .driver import Driver , DriverCreate , DriverUpdate
@@ -19,7 +20,11 @@ async def get_driver_by_id(
1920 ) -> Driver | None :
2021 """Get driver by ID - returns SQLModel instance"""
2122 try :
22- statement = select (Driver ).where (Driver .driver_id == driver_id )
23+ statement = (
24+ select (Driver )
25+ .options (selectinload (Driver .user )) # type: ignore[arg-type]
26+ .where (Driver .driver_id == driver_id )
27+ )
2328 result = await session .execute (statement )
2429 driver = result .scalars ().first ()
2530
@@ -37,7 +42,12 @@ async def get_driver_by_email(
3742 ) -> Driver | None :
3843 """Get driver by email using Firebase"""
3944 try :
40- statement = select (Driver ).join (Driver .user ).where (User .email == email ) # type: ignore[arg-type]
45+ statement = (
46+ select (Driver )
47+ .options (selectinload (Driver .user )) # type: ignore[arg-type]
48+ .join (Driver .user ) # type: ignore[arg-type]
49+ .where (User .email == email )
50+ )
4151 result = await session .execute (statement )
4252 driver = result .scalars ().first ()
4353
@@ -55,7 +65,11 @@ async def get_driver_by_auth_id(
5565 ) -> Driver | None :
5666 """Get driver by auth_id"""
5767 try :
58- statement = select (Driver ).join (Driver .user ).where (User .auth_id == auth_id ) # type: ignore[arg-type]
68+ statement = (
69+ select (Driver )
70+ .join (Driver .user ) # type: ignore[arg-type]
71+ .where (User .auth_id == auth_id )
72+ )
5973 result = await session .execute (statement )
6074 driver = result .scalars ().first ()
6175
@@ -71,7 +85,7 @@ async def get_driver_by_auth_id(
7185 async def get_drivers (self , session : AsyncSession ) -> list [Driver ]:
7286 """Get all drivers - returns SQLModel instances"""
7387 try :
74- statement = select (Driver )
88+ statement = select (Driver ). options ( selectinload ( Driver . user )) # type: ignore[arg-type]
7589 result = await session .execute (statement )
7690 return list (result .scalars ().all ())
7791 except Exception as e :
@@ -98,7 +112,7 @@ async def create_driver(
98112 try :
99113 session .add (driver )
100114 await session .commit ()
101- await session .refresh (driver )
115+ await session .refresh (driver , attribute_names = [ "user" ] )
102116 return driver
103117
104118 except Exception as db_error :
@@ -113,7 +127,11 @@ async def update_driver_by_id(
113127 ) -> Driver | None :
114128 """Update driver by ID"""
115129 try :
116- statement = select (Driver ).where (Driver .driver_id == driver_id )
130+ statement = (
131+ select (Driver )
132+ .options (selectinload (Driver .user )) # type: ignore[arg-type]
133+ .where (Driver .driver_id == driver_id )
134+ )
117135 result = await session .execute (statement )
118136 driver = result .scalars ().first ()
119137
@@ -144,7 +162,7 @@ async def update_driver_by_id(
144162 driver .notes = driver_data .notes
145163
146164 await session .commit ()
147- await session .refresh (driver )
165+ await session .refresh (driver , attribute_names = [ "user" ] )
148166 return driver
149167
150168 except Exception as e :
@@ -201,7 +219,11 @@ async def get_driver_id_by_auth_id(
201219 ) -> UUID | None :
202220 """Get driver_id by auth_id"""
203221 try :
204- statement = select (Driver ).join (Driver .user ).where (User .auth_id == auth_id ) # type: ignore[arg-type]
222+ statement = (
223+ select (Driver )
224+ .join (Driver .user ) # type: ignore[arg-type]
225+ .where (User .auth_id == auth_id )
226+ )
205227 result = await session .execute (statement )
206228 driver = result .scalars ().first ()
207229
@@ -217,7 +239,11 @@ async def get_driver_id_by_auth_id(
217239 async def delete_driver_by_email (self , session : AsyncSession , email : str ) -> None :
218240 """Delete driver by email"""
219241 try :
220- statement = select (Driver ).join (Driver .user ).where (User .email == email ) # type: ignore[arg-type]
242+ statement = (
243+ select (Driver )
244+ .join (Driver .user ) # type: ignore[arg-type]
245+ .where (User .email == email )
246+ )
221247 result = await session .execute (statement )
222248 driver = result .scalars ().first ()
223249
0 commit comments