async def get_devices(gateway_hid: Optional[str] = Query(None, alias="gatewayHid")): devices = await KronosDevices.get(gateway_hid=gateway_hid) device_array = [{**device} for device in devices] content = paginate_response(entities=device_array, max_page_size=len(devices)) return JSONResponse(content=content, headers=kronos_headers)
async def get_history(size: int = 10, page: int = 1): count_all = await FeedingResult.count() history = await FeedingResult.get(offset=page * size, limit=size) return paginate_response( entities=[{**result} for result in history], current_page=page, max_page_size=size, total_override=count_all, )
def test_pagination_with_six_items_three_per_page(): from feeder.util.feeder import paginate_response items = ["item1", "item2", "item3", "item4", "item5", "item6"] page1 = paginate_response(items, max_page_size=3) assert page1["size"] == 3 assert page1["data"] == ["item1", "item2", "item3"] assert page1["page"] == 1 assert page1["totalSize"] == 6 assert page1["totalPages"] == 2 page2 = paginate_response(items, current_page=2, max_page_size=3) assert page2["size"] == 3 assert page2["data"] == ["item4", "item5", "item6"] assert page2["page"] == 2 assert page2["totalSize"] == 6 assert page2["totalPages"] == 2
async def get_gateways(): all_gateways = await KronosGateways.get() formatted_feeders = [{ "pri": f"arw:pgs:gwy:{gateway['hid']}", **gateway } for gateway in all_gateways] return paginate_response(entities=formatted_feeders, max_page_size=len(formatted_feeders))
def test_pagination_with_three_items_three_per_page_override_size(): from feeder.util.feeder import paginate_response items = ["item1", "item2", "item3"] page = paginate_response(items, max_page_size=3, total_override=100) assert page["size"] == 3 assert page["data"] == items assert page["page"] == 1 assert page["totalSize"] == 100 assert page["totalPages"] == 34
def test_pagination_with_no_items(): from feeder.util.feeder import paginate_response items = [] page = paginate_response(items) assert page["size"] == 0 assert page["data"] == items assert page["page"] == 1 assert page["totalSize"] == 0 assert page["totalPages"] == 0