25
25
from ...models .utils import ExtendedAsyncSAEngine
26
26
27
27
28
- class PermissionControllerDBSource :
28
+ class PermissionDBSource :
29
29
_db : ExtendedAsyncSAEngine
30
30
31
31
def __init__ (self , db : ExtendedAsyncSAEngine ) -> None :
@@ -56,26 +56,25 @@ async def create_role(self, data: RoleCreateInput) -> RoleRow:
56
56
await db_session .refresh (role_row )
57
57
return role_row
58
58
59
- async def _get_role (self , role_id : uuid .UUID , db_session : SASession ) -> Optional [ RoleRow ] :
59
+ async def _get_role (self , role_id : uuid .UUID , db_session : SASession ) -> RoleRow :
60
60
stmt = sa .select (RoleRow ).where (RoleRow .id == role_id )
61
61
role_row = await db_session .scalar (stmt )
62
- return cast (Optional [RoleRow ], role_row )
62
+ result = cast (Optional [RoleRow ], role_row )
63
+ if result is None :
64
+ raise ObjectNotFound (f"Role with ID { role_id } does not exist." )
65
+ return result
63
66
64
67
async def update_role (self , data : RoleUpdateInput ) -> RoleRow :
65
68
to_update = data .fields_to_update ()
66
69
async with self ._db .begin_session () as db_session :
67
70
stmt = sa .update (RoleRow ).where (RoleRow .id == data .id ).values (** to_update )
68
71
await db_session .execute (stmt )
69
72
role_row = await self ._get_role (data .id , db_session )
70
- if role_row is None :
71
- raise ObjectNotFound (f"Role with ID { data .id } does not exist." )
72
73
return role_row
73
74
74
75
async def delete_role (self , data : RoleDeleteInput ) -> RoleRow :
75
76
async with self ._db .begin_session () as db_session :
76
77
role_row = await self ._get_role (data .id , db_session )
77
- if role_row is None :
78
- raise ObjectNotFound (f"Role with ID { data .id } does not exist." )
79
78
role_row .status = RoleStatus .DELETED
80
79
await db_session .flush ()
81
80
await db_session .refresh (role_row )
@@ -91,8 +90,9 @@ async def assign_role(self, data: UserRoleAssignmentInput) -> UserRoleRow:
91
90
92
91
async def get_role (self , role_id : uuid .UUID ) -> Optional [RoleRow ]:
93
92
async with self ._db .begin_readonly_session () as db_session :
94
- result = await self ._get_role (role_id , db_session )
95
- if result is None :
93
+ try :
94
+ result = await self ._get_role (role_id , db_session )
95
+ except ObjectNotFound :
96
96
return None
97
97
return result
98
98
0 commit comments