@terabits/grapi
Version:
Grapi Schema Generator For GraphQL Server
89 lines (88 loc) • 3.3 kB
JavaScript
;
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;