""" Custom pagination classes for the API. """ from rest_framework.pagination import PageNumberPagination from rest_framework.response import Response class StandardResultsSetPagination(PageNumberPagination): """ Standard pagination for API responses. """ page_size = 50 page_size_query_param = 'page_size' max_page_size = 1000 def get_paginated_response(self, data): return Response({ 'count': self.page.paginator.count, 'next': self.get_next_link(), 'previous': self.get_previous_link(), 'results': data, 'page': self.page.number, 'pages': self.page.paginator.num_pages, 'page_size': self.page_size, }) class LargeResultsSetPagination(PageNumberPagination): """ Pagination for large datasets (e.g., transactions). """ page_size = 100 page_size_query_param = 'page_size' max_page_size = 5000 def get_paginated_response(self, data): return Response({ 'count': self.page.paginator.count, 'next': self.get_next_link(), 'previous': self.get_previous_link(), 'results': data, 'page': self.page.number, 'pages': self.page.paginator.num_pages, 'page_size': self.page_size, })