|
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