pagination.py 457 B

12345678910111213141516171819202122232425262728
  1. from sqlalchemy.orm import Query
  2. from sqlalchemy.orm import Session
  3. def paginate(
  4. query: Query,
  5. page: int = 1,
  6. size: int = 20,
  7. ):
  8. if page < 1:
  9. page = 1
  10. if size < 1:
  11. size = 20
  12. total = query.count()
  13. items = (
  14. query
  15. .offset((page - 1) * size)
  16. .limit(size)
  17. .all()
  18. )
  19. return {
  20. "items": items,
  21. "total": total,
  22. "page": page,
  23. "size": size,
  24. }