1717from app .models .stats import Period , UserUsageStat , UserUsageStatsList
1818
1919
20- async def load_admin_attrs (admin : Admin ):
20+ async def load_admin_attrs (admin : Admin , load_users : bool = True , load_usage_logs : bool = True ):
2121 try :
22- await admin .awaitable_attrs .users
23- await admin .awaitable_attrs .usage_logs
22+ if load_users :
23+ await admin .awaitable_attrs .users
24+ if load_usage_logs :
25+ await admin .awaitable_attrs .usage_logs
2426 except AttributeError :
2527 pass
2628
@@ -49,7 +51,13 @@ async def load_admin_attrs(admin: Admin):
4951)
5052
5153
52- async def get_admin (db : AsyncSession , username : str ) -> Admin :
54+ async def get_admin (
55+ db : AsyncSession ,
56+ username : str ,
57+ * ,
58+ load_users : bool = True ,
59+ load_usage_logs : bool = True ,
60+ ) -> Admin :
5361 """
5462 Retrieves an admin by username.
5563
@@ -62,7 +70,7 @@ async def get_admin(db: AsyncSession, username: str) -> Admin:
6270 """
6371 admin = (await db .execute (select (Admin ).where (Admin .username == username ))).unique ().scalar_one_or_none ()
6472 if admin :
65- await load_admin_attrs (admin )
73+ await load_admin_attrs (admin , load_users = load_users , load_usage_logs = load_usage_logs )
6674 return admin
6775
6876
@@ -138,7 +146,13 @@ async def remove_admin(db: AsyncSession, dbadmin: Admin) -> None:
138146 await db .commit ()
139147
140148
141- async def get_admin_by_id (db : AsyncSession , id : int ) -> Admin :
149+ async def get_admin_by_id (
150+ db : AsyncSession ,
151+ id : int ,
152+ * ,
153+ load_users : bool = True ,
154+ load_usage_logs : bool = True ,
155+ ) -> Admin :
142156 """
143157 Retrieves an admin by their ID.
144158
@@ -151,11 +165,17 @@ async def get_admin_by_id(db: AsyncSession, id: int) -> Admin:
151165 """
152166 admin = (await db .execute (select (Admin ).where (Admin .id == id ))).first ()
153167 if admin :
154- await load_admin_attrs (admin )
168+ await load_admin_attrs (admin , load_users = load_users , load_usage_logs = load_usage_logs )
155169 return admin
156170
157171
158- async def get_admin_by_telegram_id (db : AsyncSession , telegram_id : int ) -> Admin :
172+ async def get_admin_by_telegram_id (
173+ db : AsyncSession ,
174+ telegram_id : int ,
175+ * ,
176+ load_users : bool = True ,
177+ load_usage_logs : bool = True ,
178+ ) -> Admin :
159179 """
160180 Retrieves an admin by their Telegram ID.
161181
@@ -168,11 +188,17 @@ async def get_admin_by_telegram_id(db: AsyncSession, telegram_id: int) -> Admin:
168188 """
169189 admin = (await db .execute (select (Admin ).where (Admin .telegram_id == telegram_id ))).scalar_one_or_none ()
170190 if admin :
171- await load_admin_attrs (admin )
191+ await load_admin_attrs (admin , load_users = load_users , load_usage_logs = load_usage_logs )
172192 return admin
173193
174194
175- async def get_admin_by_discord_id (db : AsyncSession , discord_id : int ) -> Admin :
195+ async def get_admin_by_discord_id (
196+ db : AsyncSession ,
197+ discord_id : int ,
198+ * ,
199+ load_users : bool = True ,
200+ load_usage_logs : bool = True ,
201+ ) -> Admin :
176202 """
177203 Retrieves an admin by their Discord ID.
178204
@@ -185,7 +211,7 @@ async def get_admin_by_discord_id(db: AsyncSession, discord_id: int) -> Admin:
185211 """
186212 admin = (await db .execute (select (Admin ).where (Admin .discord_id == discord_id ))).first ()
187213 if admin :
188- await load_admin_attrs (admin )
214+ await load_admin_attrs (admin , load_users = load_users , load_usage_logs = load_usage_logs )
189215 return admin
190216
191217
0 commit comments