From d62f67330f4e3e6d8d8731756f1857ef81f31e2f Mon Sep 17 00:00:00 2001 From: kao Date: Wed, 26 Apr 2023 14:54:24 -0600 Subject: [PATCH 1/3] Add limit for organizations query --- src/__tests__/integration.ts | 15 +++++++++++++++ src/graphql/organization/OrganizationQueries.ts | 6 +++--- src/graphql/schema/Organization.gql | 3 ++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/__tests__/integration.ts b/src/__tests__/integration.ts index 36667360..07fa41ed 100644 --- a/src/__tests__/integration.ts +++ b/src/__tests__/integration.ts @@ -312,6 +312,21 @@ describe('graphql server', () => { expect(dataResult.map(o => o.orgId).sort()).toEqual([muuidToString(deltaOrg.orgId), muuidToString(gammaOrg.orgId)].sort()) }) + it('limits results', async () => { + const response = await queryAPI({ + query: organizationsQuery, + operationName: 'organizations', + variables: { + filter: { displayName: { match: 'beta', exactMatch: false } }, + limit: 1 + }, + userUuid + }) + expect(response.statusCode).toBe(200) + const dataResult = response.body.data.organizations + expect(dataResult.length).toBe(1) // Three matching orgs, but only return one. + }) + it('retrieves organizations using an associatedAreaIds filter', async () => { const response = await queryAPI({ query: organizationsQuery, diff --git a/src/graphql/organization/OrganizationQueries.ts b/src/graphql/organization/OrganizationQueries.ts index 6c2cae59..cd89fba9 100644 --- a/src/graphql/organization/OrganizationQueries.ts +++ b/src/graphql/organization/OrganizationQueries.ts @@ -15,15 +15,15 @@ const OrganizationQueries = { organizations: async ( _, - { filter, sort }: { filter?: OrganizationGQLFilter, sort?: Sort }, + { filter, sort, limit = 40 }: { filter?: OrganizationGQLFilter, sort?: Sort, limit?: number}, { dataSources } ) => { const { organizations }: { organizations: OrganizationDataSource } = dataSources const filtered = await organizations.findOrganizationsByFilter(filter) if (sort != null) { - return await filtered.collation({ locale: 'en' }).sort(sort).toArray() + return await filtered.collation({ locale: 'en' }).sort(sort).limit(limit).toArray() } else { - return await filtered.collation({ locale: 'en' }).toArray() + return await filtered.collation({ locale: 'en' }).limit(limit).toArray() } } } diff --git a/src/graphql/schema/Organization.gql b/src/graphql/schema/Organization.gql index 1f5eb42f..1f4f72de 100644 --- a/src/graphql/schema/Organization.gql +++ b/src/graphql/schema/Organization.gql @@ -1,6 +1,6 @@ type Query { organization(muuid: MUUID): Organization - organizations(filter: OrgFilter, sort: OrgSort): [Organization] + organizations(filter: OrgFilter, sort: OrgSort, limit: Int): [Organization] } "A climbing area, wall or crag" @@ -39,6 +39,7 @@ type OrganizationContent { input OrgSort { displayName: Int + updatedAt: Int } input OrgFilter { From 3edaa294f6d1b979ce5dace3cbf87446e86c102d Mon Sep 17 00:00:00 2001 From: kao Date: Wed, 26 Apr 2023 14:57:36 -0600 Subject: [PATCH 2/3] Fix lint error --- src/graphql/organization/OrganizationQueries.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/graphql/organization/OrganizationQueries.ts b/src/graphql/organization/OrganizationQueries.ts index cd89fba9..72085181 100644 --- a/src/graphql/organization/OrganizationQueries.ts +++ b/src/graphql/organization/OrganizationQueries.ts @@ -15,7 +15,7 @@ const OrganizationQueries = { organizations: async ( _, - { filter, sort, limit = 40 }: { filter?: OrganizationGQLFilter, sort?: Sort, limit?: number}, + { filter, sort, limit = 40 }: { filter?: OrganizationGQLFilter, sort?: Sort, limit?: number }, { dataSources } ) => { const { organizations }: { organizations: OrganizationDataSource } = dataSources From c735d49f1c0ce50ce24510748699e645f41dc3c0 Mon Sep 17 00:00:00 2001 From: kao Date: Wed, 26 Apr 2023 15:14:16 -0600 Subject: [PATCH 3/3] Update query --- src/__tests__/integration.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/__tests__/integration.ts b/src/__tests__/integration.ts index 07fa41ed..5ccc7c6c 100644 --- a/src/__tests__/integration.ts +++ b/src/__tests__/integration.ts @@ -218,8 +218,8 @@ describe('graphql server', () => { } ` const organizationsQuery = ` - query organizations($filter: OrgFilter, $sort: OrgSort) { - organizations(filter: $filter, sort: $sort) { + query organizations($filter: OrgFilter, $sort: OrgSort, $limit: Int) { + organizations(filter: $filter, sort: $sort, limit: $limit) { orgId associatedAreaIds displayName @@ -312,12 +312,11 @@ describe('graphql server', () => { expect(dataResult.map(o => o.orgId).sort()).toEqual([muuidToString(deltaOrg.orgId), muuidToString(gammaOrg.orgId)].sort()) }) - it('limits results', async () => { + it('limits organizations returned', async () => { const response = await queryAPI({ query: organizationsQuery, operationName: 'organizations', variables: { - filter: { displayName: { match: 'beta', exactMatch: false } }, limit: 1 }, userUuid