UNPKG

@grapi/server

Version:

Grapi Schema Generator For GraphQL Server

74 lines (73 loc) 2.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MutationFactory = exports.PluginMutation = void 0; const __1 = require(".."); const lodash_1 = require("../lodash"); const mutationWithoutArrayField = (originPayload) => { const payload = { ...originPayload }; return { getData: () => payload, addField: (name, value) => { payload[name] = value; }, getArrayOperations: () => [], }; }; class PluginMutation { payload; arrayFields; constructor(payload, arrayFields) { this.payload = { ...payload }; this.arrayFields = arrayFields; } getData = () => { return (0, lodash_1.omit)(this.payload, this.arrayFields); }; addField = (name, value) => { this.payload[name] = value; }; getArrayOperations = () => { const arrayFieldData = (0, lodash_1.pick)(this.payload, this.arrayFields); const operations = []; (0, lodash_1.forEach)(arrayFieldData, (operationValue, fieldName) => { const setValue = operationValue[__1.ArrayOperator.set]; if (setValue) { operations.push({ fieldName, operator: __1.ArrayOperator.set, value: setValue, }); } const addValue = operationValue[__1.ArrayOperator.add]; if (addValue) { operations.push({ fieldName, operator: __1.ArrayOperator.add, value: addValue, }); } const removeValue = operationValue[__1.ArrayOperator.remove]; if (removeValue) { operations.push({ fieldName, operator: __1.ArrayOperator.remove, value: removeValue, }); } }); return operations; }; } exports.PluginMutation = PluginMutation; class MutationFactory { arrayFieldMarks = {}; markArrayField = (field) => { this.arrayFieldMarks[field] = true; }; createMutation = (payload) => { if ((0, lodash_1.isEmpty)(this.arrayFieldMarks)) { return mutationWithoutArrayField(payload); } const arrayFields = Object.keys(this.arrayFieldMarks); return new PluginMutation(payload, arrayFields); }; } exports.MutationFactory = MutationFactory;