diff --git a/packages/data-layer/src/data-layer.ts b/packages/data-layer/src/data-layer.ts index 5c79076ad..65936bc67 100644 --- a/packages/data-layer/src/data-layer.ts +++ b/packages/data-layer/src/data-layer.ts @@ -783,10 +783,31 @@ export class DataLayer { chainId: number; roundId: string; }): Promise { - const response: { applications: ProjectApplicationForManager[] } = - await request(this.gsIndexerEndpoint, getApplicationsForManager, args); + const PAGE_SIZE = 200; // You can adjust this value based on your needs + let allApplications: ProjectApplicationForManager[] = []; + let offset = 0; + let hasMore = true; + + while (hasMore) { + const response: { applications: ProjectApplicationForManager[] } = + await request(this.gsIndexerEndpoint, getApplicationsForManager, { + ...args, + limit: PAGE_SIZE, + offset, + }); + + const applications = response.applications; + allApplications = [...allApplications, ...applications]; + + // If we got fewer results than the page size, we've reached the end + if (applications.length < PAGE_SIZE) { + hasMore = false; + } else { + offset += PAGE_SIZE; + } + } - return response.applications; + return allApplications; } async getDonationsByDonorAddress(args: { diff --git a/packages/data-layer/src/queries.ts b/packages/data-layer/src/queries.ts index 39e654922..652bc98cf 100644 --- a/packages/data-layer/src/queries.ts +++ b/packages/data-layer/src/queries.ts @@ -244,9 +244,16 @@ export const getApprovedApplicationsByProjectIds = gql` `; export const getApplicationsForManager = gql` - query getApplicationsForManager($chainId: Int!, $roundId: String!) { + query getApplicationsForManager( + $chainId: Int! + $roundId: String! + $limit: Int! + $offset: Int! + ) { applications( where: { roundId: { _eq: $roundId }, chainId: { _eq: $chainId } } + limit: $limit + offset: $offset ) { id projectId