From a2b3fc3333eb2b1703e437fd741916a92cbff722 Mon Sep 17 00:00:00 2001 From: Tee Date: Tue, 23 Mar 2021 20:27:32 -0400 Subject: [PATCH] Recursively paginate all cards with getAllCards helper --- src/services/cardService.ts | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/services/cardService.ts b/src/services/cardService.ts index 11a6e7f..99e94d7 100644 --- a/src/services/cardService.ts +++ b/src/services/cardService.ts @@ -6,6 +6,25 @@ import { Subtype } from '../enums/subtype'; import { Rarity } from '../enums/rarity'; import { Client } from '../client'; +async function paginateAllCards(pageNumber: number, params?: Parameter): Promise { + let currentPage = pageNumber; + const client: Client = Client.getInstance(); + const response: Card[] = await client.get('cards', { ...params, pageSize: 250, page: currentPage }); + + if (response.length === 0) { + return response; + } else { + currentPage++; + return response.concat(await paginateAllCards(currentPage)); + } +} + +export async function getAllCards(params?: Parameter): Promise { + const startingPage = 1; + const response: Card[] = await paginateAllCards(startingPage, params); + return response; +} + export async function findCardByID(id: string): Promise { const client: Client = Client.getInstance(); const response: Card = await client.get('cards', id); @@ -18,13 +37,6 @@ export async function findCardsByQueries(params: Parameter): Promise { return response; } -export async function getAllCards(): Promise { - const params: Parameter = { pageSize: 250 }; - const client: Client = Client.getInstance(); - const response: Card[] = await client.get('cards', params); - return response; -} - export async function getTypes(): Promise { const client: Client = Client.getInstance();