UNPKG

@terabits/grapi

Version:

Grapi Schema Generator For GraphQL Server

89 lines (88 loc) 3.3 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; exports.__esModule = true; exports.MutationFactory = exports.PluginMutation = void 0; var __1 = require(".."); var lodash_1 = require("../lodash"); var mutationWithoutArrayField = function (originPayload) { var payload = __assign({}, originPayload); return { getData: function () { return payload; }, addField: function (name, value) { payload[name] = value; }, getArrayOperations: function () { return []; } }; }; var PluginMutation = (function () { function PluginMutation(payload, arrayFields) { var _this = this; this.getData = function () { return (0, lodash_1.omit)(_this.payload, _this.arrayFields); }; this.addField = function (name, value) { _this.payload[name] = value; }; this.getArrayOperations = function () { var arrayFieldData = (0, lodash_1.pick)(_this.payload, _this.arrayFields); var operations = []; (0, lodash_1.forEach)(arrayFieldData, function (operationValue, fieldName) { var setValue = operationValue[__1.ArrayOperator.set]; if (setValue) { operations.push({ fieldName: fieldName, operator: __1.ArrayOperator.set, value: setValue }); } var addValue = operationValue[__1.ArrayOperator.add]; if (addValue) { operations.push({ fieldName: fieldName, operator: __1.ArrayOperator.add, value: addValue }); } var removeValue = operationValue[__1.ArrayOperator.remove]; if (removeValue) { operations.push({ fieldName: fieldName, operator: __1.ArrayOperator.remove, value: removeValue }); } }); return operations; }; this.payload = __assign({}, payload); this.arrayFields = arrayFields; } return PluginMutation; }()); exports.PluginMutation = PluginMutation; var MutationFactory = (function () { function MutationFactory() { var _this = this; this.arrayFieldMarks = {}; this.markArrayField = function (field) { _this.arrayFieldMarks[field] = true; }; this.createMutation = function (payload) { if ((0, lodash_1.isEmpty)(_this.arrayFieldMarks)) { return mutationWithoutArrayField(payload); } var arrayFields = Object.keys(_this.arrayFieldMarks); return new PluginMutation(payload, arrayFields); }; } return MutationFactory; }()); exports.MutationFactory = MutationFactory;