@@ -27042,6 +27042,9 @@ var Schema = /** @class */ (function () {
2704227042 return (Schema.getTypeNameOfField(field).endsWith('TypeConnection'));
2704327043 };
2704427044 Schema.getTypeNameOfField = function (field) {
27045+ if (field.type.kind === 'LIST') {
27046+ return "[" + field.type.ofType.name + "]";
27047+ }
2704527048 var name = field.type.name ||
2704627049 field.type.ofType.name ||
2704727050 field.type.ofType.ofType.name ||
@@ -27089,7 +27092,7 @@ var __generator$1 = (undefined && undefined.__generator) || function (thisArg, b
2708927092 }
2709027093};
2709127094var inflection$2 = require('inflection');
27092- var introspectionQuery = "\nquery Introspection {\n __schema {\n types {\n name\n description\n\n fields(includeDeprecated: true) {\n name\n description\n args {\n name\n description\n type {\n name\n kind\n\n ofType {\n kind\n\n name\n ofType {\n kind\n name\n\n ofType {\n kind\n name\n }\n }\n }\n }\n }\n\n type {\n name\n kind\n\n ofType {\n kind\n\n name\n ofType {\n kind\n name\n\n ofType {\n kind\n name\n }\n }\n }\n }\n }\n\n inputFields {\n name\n description\n\n type {\n name\n kind\n\n ofType {\n kind\n\n name\n ofType {\n kind\n name\n\n ofType {\n kind\n name\n }\n }\n }\n }\n }\n }\n }\n}\n";
27095+ var introspectionQuery = "\nquery Introspection {\n __schema {\n types {\n name\n description\n fields(includeDeprecated: true) {\n name\n description\n args {\n name\n description\n type {\n name\n kind\n\n ofType {\n kind\n\n name\n ofType {\n kind\n name\n\n ofType {\n kind\n name\n }\n }\n }\n }\n }\n\n type {\n name\n kind\n\n ofType {\n kind\n\n name\n ofType {\n kind\n name\n\n ofType {\n kind\n name\n }\n }\n }\n }\n }\n\n inputFields {\n name\n description\n type {\n name\n kind\n\n ofType {\n kind\n\n name\n ofType {\n kind\n name\n\n ofType {\n kind\n name\n }\n }\n }\n }\n }\n }\n }\n}\n";
2709327096/**
2709427097 * Internal context of the plugin. This class contains all information, the models, database, logger and so on.
2709527098 *
@@ -27275,11 +27278,13 @@ var QueryBuilder = /** @class */ (function () {
2727527278 if (allowIdFields === void 0) { allowIdFields = false; }
2727627279 var context = Context.getInstance();
2727727280 model = context.getModel(model);
27278- var params = this.buildArguments(model, args, false, filter, allowIdFields);
27281+ name = name ? name : model.pluralName;
27282+ var field = context.schema.getMutation(name, true) || context.schema.getQuery(name, true);
27283+ var params = this.buildArguments(model, args, false, filter, allowIdFields, field);
2727927284 path = path.length === 0 ? [model.singularName] : path;
2728027285 var fields = "\n " + model.getQueryFields().join(' ') + "\n " + this.buildRelationsQuery(model, path) + "\n ";
2728127286 if (multiple) {
27282- var header = "" + ( name ? name : model.pluralName) + params;
27287+ var header = "" + name + params;
2728327288 if (context.connectionQueryMode === 'nodes') {
2728427289 return "\n " + header + " {\n nodes {\n " + fields + "\n }\n }\n ";
2728527290 }
@@ -27325,8 +27330,10 @@ var QueryBuilder = /** @class */ (function () {
2732527330 // name
2732627331 if (!name)
2732727332 name = (multiple ? model.pluralName : model.singularName);
27333+ // field
27334+ var field = context.schema.getMutation(name, true) || context.schema.getQuery(name, true);
2732827335 // build query
27329- var query = type + " " + upcaseFirstLetter(name) + this.buildArguments(model, args, true, filter) + " {\n" +
27336+ var query = type + " " + upcaseFirstLetter(name) + this.buildArguments(model, args, true, filter, true, field ) + " {\n" +
2733027337 (" " + this.buildField(model, multiple, args, [], name, filter, true) + "\n") +
2733127338 "}";
2733227339 return src(query);
@@ -27353,13 +27360,15 @@ var QueryBuilder = /** @class */ (function () {
2735327360 * @param {boolean} signature When true, then this method generates a query signature instead of key/value pairs
2735427361 * @param filter
2735527362 * @param {boolean} allowIdFields If true, ID fields will be included in the arguments list
27363+ * @param {GraphQLField} field Optional. The GraphQL mutation or query field
2735627364 * @returns {String}
2735727365 */
27358- QueryBuilder.buildArguments = function (model, args, signature, filter, allowIdFields) {
27366+ QueryBuilder.buildArguments = function (model, args, signature, filter, allowIdFields, field ) {
2735927367 var _this = this;
2736027368 if (signature === void 0) { signature = false; }
2736127369 if (filter === void 0) { filter = false; }
2736227370 if (allowIdFields === void 0) { allowIdFields = true; }
27371+ if (field === void 0) { field = null; }
2736327372 if (args === undefined)
2736427373 return '';
2736527374 var returnValue = '';
@@ -27369,17 +27378,24 @@ var QueryBuilder = /** @class */ (function () {
2736927378 var value = args[key];
2737027379 var isForeignKey = model.skipField(key);
2737127380 var skipFieldDueId = (key === 'id' || isForeignKey) && !allowIdFields;
27381+ var schema = Context.getInstance().schema;
27382+ var type = schema.getType(model.singularName + (filter ? 'Filter' : ''));
27383+ var schemaField = (filter ? type.inputFields : type.fields).find(function (f) { return f.name === key; });
27384+ var isConnectionField = schemaField && Schema.getTypeNameOfField(schemaField).endsWith('TypeConnection');
2737227385 // Ignore null fields, ids and connections
27373- if (value && !(value instanceof Array || skipFieldDueId) ) {
27386+ if (value && !skipFieldDueId && !isConnectionField ) {
2737427387 var typeOrValue = '';
2737527388 if (signature) {
27376- var schema = Context.getInstance().schema;
27377- var type = schema.getType(model.singularName + (filter ? 'Filter' : ''));
27378- var schemaField = (filter ? type.inputFields : type.fields).find(function (f) { return f.name === key; });
2737927389 if (undefined(value) && value.__type) {
2738027390 // Case 2 (User!)
2738127391 typeOrValue = value.__type + 'Input!';
2738227392 }
27393+ else if (undefined(value) && field) {
27394+ var arg = field.args.find(function (f) { return f.name === key; });
27395+ if (!arg)
27396+ throw new Error("A argument is of type array but it's not possible to determine the type");
27397+ typeOrValue = Schema.getTypeNameOfField(arg) + '!';
27398+ }
2738327399 else if (schemaField && Schema.getTypeNameOfField(schemaField)) {
2738427400 // Case 1, 3 and 4
2738527401 typeOrValue = Schema.getTypeNameOfField(schemaField) + '!';
0 commit comments