MCPcopy Create free account
hub / github.com/dbunt1tled/python-fast-api / find_all

Method find_all

src/core/db/repository.py:199–239  ·  view source on GitHub ↗
(
        self,
        filters: list[Filter] | None = None,
        order_by: list[OrderBy] | None = None,
        pagination: Pagination | None = None,
        pager: Pager | None = None,
    )

Source from the content-addressed store, hash-verified

197 return result.rowcount or 0
198
199 async def find_all(
200 self,
201 filters: list[Filter] | None = None,
202 order_by: list[OrderBy] | None = None,
203 pagination: Pagination | None = None,
204 pager: Pager | None = None,
205 ) -> Sequence[T] | Paginator[T]:
206 query = select(self._model)
207
208 if filters:
209 query = self._apply_filters(query, filters)
210
211 if order_by:
212 query = self._apply_ordering(query, order_by)
213
214 if pagination is not None:
215 count_query = select(func.count()).select_from(query.subquery())
216 if pagination.per_page is not None:
217 query = query.limit(pagination.per_page)
218 if pagination.offset is not None:
219 query = query.offset(pagination.offset)
220 async with self.get_session() as session:
221 total_result = await session.execute(count_query)
222 total = total_result.scalar_one()
223 result = await session.execute(query)
224 items = result.scalars().all()
225 return Paginator(
226 items=items,
227 total=total,
228 page=pagination.page or 1,
229 per_page=pagination.per_page or total,
230 )
231 elif pager is not None:
232 if pager.limit is not None:
233 query = query.limit(pager.limit)
234 if pager.offset is not None:
235 query = query.offset(pager.offset)
236
237 async with self.get_session() as session:
238 result = await session.execute(query)
239 return result.scalars().all()
240
241 async def find_one(
242 self,

Callers 2

allMethod · 0.80
allMethod · 0.80

Calls 8

_apply_filtersMethod · 0.95
_apply_orderingMethod · 0.95
get_sessionMethod · 0.95
PaginatorClass · 0.85
countMethod · 0.80
offsetMethod · 0.80
executeMethod · 0.45
allMethod · 0.45

Tested by

no test coverage detected