Skip to content

Commit

Permalink
Merge pull request #274 from OpenBeta/kao-org-limit
Browse files Browse the repository at this point in the history
Add limit for organizations query
  • Loading branch information
zichongkao committed Apr 26, 2023
2 parents a1159ab + c735d49 commit a116660
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 6 deletions.
18 changes: 16 additions & 2 deletions src/__tests__/integration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -312,6 +312,20 @@ describe('graphql server', () => {
expect(dataResult.map(o => o.orgId).sort()).toEqual([muuidToString(deltaOrg.orgId), muuidToString(gammaOrg.orgId)].sort())
})

it('limits organizations returned', async () => {
const response = await queryAPI({
query: organizationsQuery,
operationName: 'organizations',
variables: {
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,
Expand Down
6 changes: 3 additions & 3 deletions src/graphql/organization/OrganizationQueries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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()
}
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/graphql/schema/Organization.gql
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -39,6 +39,7 @@ type OrganizationContent {

input OrgSort {
displayName: Int
updatedAt: Int
}

input OrgFilter {
Expand Down

0 comments on commit a116660

Please sign in to comment.