1- import type { Collection , PaginatedDocs , PayloadRequest , Where } from 'payload'
1+ import type { GraphQLResolveInfo } from 'graphql'
2+ import type { Collection , PaginatedDocs , Where } from 'payload'
23
34import { findOperation , isolateObjectProperty } from 'payload'
45
56import type { Context } from '../types.js'
67
8+ import { buildSelectForCollectionMany } from '../../utilities/select.js'
9+
710export type Resolver = (
811 _ : unknown ,
912 args : {
@@ -14,28 +17,24 @@ export type Resolver = (
1417 locale ?: string
1518 page ?: number
1619 pagination ?: boolean
20+ select ?: boolean
1721 sort ?: string
1822 trash ?: boolean
1923 where ?: Where
2024 } ,
21- context : {
22- req : PayloadRequest
23- } ,
25+ context : Context ,
26+ info : GraphQLResolveInfo ,
2427 // eslint-disable-next-line @typescript-eslint/no-explicit-any
2528) => Promise < PaginatedDocs < any > >
2629
2730export function findResolver ( collection : Collection ) : Resolver {
28- return async function resolver ( _ , args , context : Context ) {
29- let { req } = context
30- const locale = req . locale
31- const fallbackLocale = req . fallbackLocale
31+ return async function resolver ( _ , args , context , info ) {
32+ const req = context . req = isolateObjectProperty ( context . req , [ 'locale' , 'fallbackLocale' , 'transactionID' ] )
33+ const select = context . select = args . select ? buildSelectForCollectionMany ( info ) : undefined
3234
33- req = isolateObjectProperty ( req , [ 'locale' , 'fallbackLocale' , 'transactionID' ] )
34- req . locale = args . locale || locale
35- req . fallbackLocale = args . fallbackLocale || fallbackLocale
36- if ( ! req . query ) {
37- req . query = { }
38- }
35+ req . locale = args . locale || req . locale
36+ req . fallbackLocale = args . fallbackLocale || req . fallbackLocale
37+ req . query = req . query || { }
3938
4039 const draft : boolean =
4140 ( args . draft ?? req . query ?. draft === 'false' )
@@ -47,8 +46,6 @@ export function findResolver(collection: Collection): Resolver {
4746 req . query . draft = String ( draft )
4847 }
4948
50- context . req = req
51-
5249 const options = {
5350 collection,
5451 depth : 0 ,
@@ -57,12 +54,13 @@ export function findResolver(collection: Collection): Resolver {
5754 page : args . page ,
5855 pagination : args . pagination ,
5956 req,
57+ select,
6058 sort : args . sort ,
6159 trash : args . trash ,
6260 where : args . where ,
6361 }
6462
65- const results = await findOperation ( options )
66- return results
63+ const result = await findOperation ( options )
64+ return result
6765 }
6866}
0 commit comments