-
-
Notifications
You must be signed in to change notification settings - Fork 41
Expand file tree
/
Copy pathAreaQueries.ts
More file actions
27 lines (23 loc) · 990 Bytes
/
AreaQueries.ts
File metadata and controls
27 lines (23 loc) · 990 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { AreaType, BulkAreasGQLQueryInput } from '../../db/AreaTypes'
import { GQLContext } from '../../types'
const AreaQueries = {
cragsWithin: async (_, { filter }, { dataSources }: GQLContext): Promise<AreaType | null> => {
const { areas } = dataSources
const { bbox, zoom } = filter
return await areas.findCragsWithin(bbox, zoom)
},
countries: async (_, params, { dataSources }: GQLContext): Promise<AreaType[]> => {
const { areas } = dataSources
return await areas.listAllCountries()
},
bulkAreas: async (_: any, params, { dataSources }: GQLContext): Promise<AreaType[]> => {
const { areas } = dataSources
const { ancestors, limit, offset } = params as BulkAreasGQLQueryInput
const DEFAULT_LIMIT = 500
const MAX_LIMIT = 2000
const safeLimit = Math.min(limit ?? DEFAULT_LIMIT, MAX_LIMIT)
const safeOffset = offset ?? 0
return await areas.bulkDownloadAreas(ancestors, safeLimit, safeOffset)
}
}
export default AreaQueries