|
4 | 4 | ObjectTypeComposer, |
5 | 5 | InterfaceTypeComposer, |
6 | 6 | ObjectTypeComposerArgumentConfigMap, |
| 7 | + InputTypeComposer, |
7 | 8 | } from 'graphql-compose'; |
8 | 9 | import type { Model, Document } from 'mongoose'; |
9 | 10 | import { isObject, toMongoFilterDottedObject, getIndexedFieldNamesForGraphQL } from '../../utils'; |
@@ -102,24 +103,30 @@ export function filterHelperArgs<TDoc extends Document = any>( |
102 | 103 |
|
103 | 104 | const { prefix, suffix } = opts; |
104 | 105 | const filterTypeName: string = `${prefix}${typeComposer.getTypeName()}${suffix}`; |
105 | | - const itc = typeComposer.getInputTypeComposer().clone(filterTypeName); |
106 | 106 |
|
107 | | - makeFieldsRecursiveNullable(itc, { prefix, suffix }); |
| 107 | + let itc; |
| 108 | + if (typeComposer.schemaComposer.hasInstance(filterTypeName, InputTypeComposer)) { |
| 109 | + itc = typeComposer.schemaComposer.getITC(filterTypeName); |
| 110 | + } else { |
| 111 | + itc = typeComposer.getInputTypeComposer().clone(filterTypeName); |
108 | 112 |
|
109 | | - itc.removeField(removeFields); |
| 113 | + makeFieldsRecursiveNullable(itc, { prefix, suffix }); |
110 | 114 |
|
111 | | - if (opts.requiredFields) { |
112 | | - itc.makeFieldNonNull(opts.requiredFields); |
113 | | - } |
| 115 | + itc.removeField(removeFields); |
114 | 116 |
|
115 | | - if (itc.getFieldNames().length === 0) { |
116 | | - return {} as any; |
117 | | - } |
| 117 | + if (opts.requiredFields) { |
| 118 | + itc.makeFieldNonNull(opts.requiredFields); |
| 119 | + } |
118 | 120 |
|
119 | | - if (!opts.baseTypeName) { |
120 | | - opts.baseTypeName = typeComposer.getTypeName(); |
| 121 | + if (itc.getFieldNames().length === 0) { |
| 122 | + return {} as any; |
| 123 | + } |
| 124 | + |
| 125 | + if (!opts.baseTypeName) { |
| 126 | + opts.baseTypeName = typeComposer.getTypeName(); |
| 127 | + } |
| 128 | + addFilterOperators(itc, model, opts); |
121 | 129 | } |
122 | | - addFilterOperators(itc, model, opts); |
123 | 130 |
|
124 | 131 | return { |
125 | 132 | filter: { |
|
0 commit comments