@@ -10,7 +10,7 @@ import {
1010import { TypeComposer , InputTypeComposer } from 'graphql-compose' ;
1111import { getIndexesFromModel } from '../../utils/getIndexesFromModel' ;
1212import { isObject } from '../../utils/is' ;
13- import { toDottedObject , upperFirst } from '../../utils' ;
13+ import { toMongoDottedObject , upperFirst } from '../../utils' ;
1414import typeStorage from '../../typeStorage' ;
1515import type {
1616 GraphQLFieldConfigArgumentMap ,
@@ -23,24 +23,27 @@ import type {
2323
2424export const OPERATORS_FIELDNAME = '_operators' ;
2525
26-
2726export const filterHelperArgs = (
2827 typeComposer : TypeComposer ,
2928 model : MongooseModelT ,
30- opts : filterHelperArgsOpts
29+ opts : filterHelperArgsOpts ,
3130) : GraphQLFieldConfigArgumentMap => {
3231 if ( ! ( typeComposer instanceof TypeComposer ) ) {
33- throw new Error ( 'First arg for filterHelperArgs() should be instance of TypeComposer.' ) ;
32+ throw new Error (
33+ 'First arg for filterHelperArgs() should be instance of TypeComposer.' ,
34+ ) ;
3435 }
3536
3637 if ( ! model || ! model . modelName || ! model . schema ) {
3738 throw new Error (
38- 'Second arg for filterHelperArgs() should be instance of MongooseModel.'
39+ 'Second arg for filterHelperArgs() should be instance of MongooseModel.' ,
3940 ) ;
4041 }
4142
4243 if ( ! opts || ! opts . filterTypeName ) {
43- throw new Error ( 'You should provide non-empty `filterTypeName` in options.' ) ;
44+ throw new Error (
45+ 'You should provide non-empty `filterTypeName` in options.' ,
46+ ) ;
4447 }
4548
4649 const removeFields = [ ] ;
@@ -54,28 +57,32 @@ export const filterHelperArgs = (
5457
5558 if ( opts . onlyIndexed ) {
5659 const indexedFieldNames = getIndexedFieldNames ( model ) ;
57- Object . keys ( typeComposer . getFields ( ) ) . forEach ( ( fieldName ) => {
60+ Object . keys ( typeComposer . getFields ( ) ) . forEach ( fieldName => {
5861 if ( indexedFieldNames . indexOf ( fieldName ) === - 1 ) {
5962 removeFields . push ( fieldName ) ;
6063 }
6164 } ) ;
6265 }
6366
6467 const filterTypeName : string = opts . filterTypeName ;
65- const inputComposer = typeComposer . getInputTypeComposer ( ) . clone ( filterTypeName ) ;
68+ const inputComposer = typeComposer
69+ . getInputTypeComposer ( )
70+ . clone ( filterTypeName ) ;
6671 inputComposer . removeField ( removeFields ) ;
6772
6873 if ( opts . requiredFields ) {
6974 inputComposer . makeRequired ( opts . requiredFields ) ;
7075 }
7176
72- if ( ! { } . hasOwnProperty . call ( opts , 'operators' ) || opts . operators !== false ) {
77+ if (
78+ ! ( { } ) . hasOwnProperty . call ( opts , 'operators' ) || opts . operators !== false
79+ ) {
7380 addFieldsWithOperator (
7481 // $FlowFixMe
7582 `Operators${ opts . filterTypeName } ` ,
7683 inputComposer ,
7784 model ,
78- opts . operators || { }
85+ opts . operators || { } ,
7986 ) ;
8087 }
8188
@@ -102,25 +109,28 @@ export function filterHelper(resolveParams: ExtendedResolveParams): void {
102109 if ( filter && typeof filter === 'object' && Object . keys ( filter ) . length > 0 ) {
103110 const modelFields = resolveParams . query . schema . paths ;
104111 const clearedFilter = { } ;
105- Object . keys ( filter ) . forEach ( ( key ) => {
112+ Object . keys ( filter ) . forEach ( key => {
106113 if ( modelFields [ key ] ) {
107114 clearedFilter [ key ] = filter [ key ] ;
108115 }
109116 } ) ;
110117 if ( Object . keys ( clearedFilter ) . length > 0 ) {
111- resolveParams . query = resolveParams . query . where ( toDottedObject ( clearedFilter ) ) ; // eslint-disable-line
118+ resolveParams . query = resolveParams . query . where (
119+ toMongoDottedObject ( clearedFilter ) ,
120+ ) ; // eslint-disable-line
112121 }
113122
114123 if ( filter [ OPERATORS_FIELDNAME ] ) {
115124 const operatorFields = filter [ OPERATORS_FIELDNAME ] ;
116- Object . keys ( operatorFields ) . forEach ( ( fieldName ) => {
125+ Object . keys ( operatorFields ) . forEach ( fieldName => {
117126 const fieldOperators = Object . assign ( { } , operatorFields [ fieldName ] ) ;
118127 const criteria = { } ;
119- Object . keys ( fieldOperators ) . forEach ( ( operatorName ) => {
128+ Object . keys ( fieldOperators ) . forEach ( operatorName => {
120129 criteria [ `$${ operatorName } ` ] = fieldOperators [ operatorName ] ;
121130 } ) ;
122131 if ( Object . keys ( criteria ) . length > 0 ) {
123- resolveParams . query = resolveParams . query . where ( { // eslint-disable-line
132+ resolveParams . query = resolveParams . query . where ( {
133+ // eslint-disable-line
124134 [ fieldName ] : criteria ,
125135 } ) ;
126136 }
@@ -129,18 +139,19 @@ export function filterHelper(resolveParams: ExtendedResolveParams): void {
129139 }
130140
131141 if ( isObject ( resolveParams . rawQuery ) ) {
132- resolveParams . query = resolveParams . query . where ( // eslint-disable-line
133- // $FlowFixMe
134- resolveParams . rawQuery
135- ) ;
142+ resolveParams . query = resolveParams . query
143+ . where ( // eslint-disable-line
144+ // $FlowFixMe
145+ resolveParams . rawQuery ,
146+ ) ;
136147 }
137148}
138149
139150export function getIndexedFieldNames ( model : MongooseModelT ) : string [ ] {
140151 const indexes = getIndexesFromModel ( model ) ;
141152
142153 const fieldNames = [ ] ;
143- indexes . forEach ( ( indexData ) => {
154+ indexes . forEach ( indexData => {
144155 const keys = Object . keys ( indexData ) ;
145156 const clearedName = keys [ 0 ] . replace ( / [ ^ _ a - z A - Z 0 - 9 ] / i, '__' ) ;
146157 fieldNames . push ( clearedName ) ;
@@ -153,32 +164,39 @@ export function addFieldsWithOperator(
153164 typeName : string ,
154165 inputComposer : InputTypeComposer ,
155166 model : MongooseModelT ,
156- operatorsOpts : filterOperatorsOpts
167+ operatorsOpts : filterOperatorsOpts ,
157168) : InputTypeComposer {
158169 const operatorsComposer = new InputTypeComposer (
159170 typeStorage . getOrSet (
160171 typeName ,
161172 new GraphQLInputObjectType ( {
162173 name : typeName ,
163174 fields : { } ,
164- } )
165- )
175+ } ) ,
176+ ) ,
166177 ) ;
167178
168- const availableOperators : filterOperatorNames [ ]
169- = [ 'gt' , 'gte' , 'lt' , 'lte' , 'ne' , 'in[]' , 'nin[]' ] ;
179+ const availableOperators : filterOperatorNames [ ] = [
180+ 'gt' ,
181+ 'gte' ,
182+ 'lt' ,
183+ 'lte' ,
184+ 'ne' ,
185+ 'in[]' ,
186+ 'nin[]' ,
187+ ] ;
170188
171189 // if `opts.resolvers.[resolverName].filter.operators` is empty and not disabled via `false`
172190 // then fill it up with indexed fields
173191 const indexedFields = getIndexedFieldNames ( model ) ;
174192 if ( operatorsOpts !== false && Object . keys ( operatorsOpts ) . length === 0 ) {
175- indexedFields . forEach ( ( fieldName ) => {
193+ indexedFields . forEach ( fieldName => {
176194 operatorsOpts [ fieldName ] = availableOperators ; // eslint-disable-line
177195 } ) ;
178196 }
179197
180198 const existedFields = inputComposer . getFields ( ) ;
181- Object . keys ( existedFields ) . forEach ( ( fieldName ) => {
199+ Object . keys ( existedFields ) . forEach ( fieldName => {
182200 if ( operatorsOpts [ fieldName ] && operatorsOpts [ fieldName ] !== false ) {
183201 const fields = { } ;
184202 let operators ;
@@ -187,7 +205,7 @@ export function addFieldsWithOperator(
187205 } else {
188206 operators = availableOperators ;
189207 }
190- operators . forEach ( ( operatorName ) => {
208+ operators . forEach ( operatorName => {
191209 // unwrap from GraphQLNonNull and GraphQLList, if present
192210 const namedType = getNamedType ( existedFields [ fieldName ] . type ) ;
193211 if ( namedType ) {
@@ -214,7 +232,7 @@ export function addFieldsWithOperator(
214232 new GraphQLInputObjectType ( {
215233 name : operatorTypeName ,
216234 fields,
217- } )
235+ } ) ,
218236 ) ,
219237 description : 'Filter value by operator(s)' ,
220238 } ) ;
0 commit comments