@@ -275,20 +275,25 @@ async def get_list(self, params: GetListParams) -> tuple[list[Record], int]:
275
275
offset = (params ["pagination" ]["page" ] - 1 ) * per_page
276
276
277
277
filters = params ["filter" ]
278
- async with self ._db .connect () as conn :
279
- query = sa .select (self ._table )
280
- if filters :
281
- query = query .where (* create_filters (self ._table .c , filters ))
282
-
283
- count_t = conn .scalar (sa .select (sa .func .count ()).select_from (query .subquery ()))
284
-
285
- sort_dir = sa .asc if params ["sort" ]["order" ] == "ASC" else sa .desc
286
- order_by : sa .UnaryExpression [object ] = sort_dir (params ["sort" ]["field" ])
287
- stmt = query .offset (offset ).limit (per_page ).order_by (order_by )
288
- result , count = await asyncio .gather (conn .execute (stmt ), count_t )
289
- entities = [r ._asdict () for r in result ]
290
-
291
- return entities , count
278
+ query = sa .select (self ._table )
279
+ if filters :
280
+ query = query .where (* create_filters (self ._table .c , filters ))
281
+
282
+ async def get_count () -> int :
283
+ async with self ._db .connect () as conn :
284
+ count = await conn .scalar (sa .select (sa .func .count ()).select_from (query .subquery ()))
285
+ if count is None :
286
+ raise RuntimeError ("Failed to get count." )
287
+ return count
288
+
289
+ async def get_entities () -> list [Record ]:
290
+ async with self ._db .connect () as conn :
291
+ sort_dir = sa .asc if params ["sort" ]["order" ] == "ASC" else sa .desc
292
+ order_by : sa .UnaryExpression [object ] = sort_dir (params ["sort" ]["field" ])
293
+ stmt = query .offset (offset ).limit (per_page ).order_by (order_by )
294
+ return [r ._asdict () for r in await conn .execute (stmt )]
295
+
296
+ return await asyncio .gather (get_entities (), get_count ())
292
297
293
298
@handle_errors
294
299
async def get_one (self , record_id : Any , meta : Meta ) -> Record :
0 commit comments