shyft
Version:
Model driven GraphQL API framework
69 lines (68 loc) • 3.16 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkRequiredI18nInputs = exports.getEntityUniquenessAttributes = void 0;
var _ = __importStar(require("lodash"));
var ProtocolGraphQL_1 = require("./ProtocolGraphQL");
var Index_1 = require("../engine/index/Index");
var CustomError_1 = require("../engine/CustomError");
var registry_1 = require("./registry");
var getEntityUniquenessAttributes = function (entity) {
var protocolConfiguration = ProtocolGraphQL_1.ProtocolGraphQL.getProtocolConfiguration();
var ret = [];
if (!entity.getIndexes) {
return ret;
}
var entityIndexes = entity.getIndexes();
if (entityIndexes) {
entityIndexes.map(function (_a) {
var type = _a.type, attributes = _a.attributes;
if (type === Index_1.INDEX_UNIQUE) {
ret.push({
uniquenessName: protocolConfiguration.generateUniquenessAttributesName(entity, attributes),
attributes: attributes,
});
}
});
}
return ret;
};
exports.getEntityUniquenessAttributes = getEntityUniquenessAttributes;
var checkRequiredI18nInputs = function (entity, operation, input) {
var entityAttributes = entity.getAttributes();
_.forEach(operation.attributes, function (attributeName) {
var attribute = entityAttributes[attributeName];
var _a = registry_1.getRegisteredEntityAttribute(entity.name, attribute.name), gqlFieldName = _a.fieldName, gqlFieldNameI18n = _a.fieldNameI18n;
if (attribute.i18n) {
if (input[gqlFieldName] &&
input[gqlFieldNameI18n] &&
input[gqlFieldNameI18n]) {
throw new CustomError_1.CustomError("Only one of these fields may be used: " + gqlFieldName + ", " + gqlFieldNameI18n, 'AmbiguousI18nInputError');
}
if (attribute.required && !operation.ignoreRequired) {
if (!input[gqlFieldName] && !input[gqlFieldNameI18n]) {
throw new CustomError_1.CustomError("Provide one of these fields: " + gqlFieldName + ", " + gqlFieldNameI18n, 'MissingI18nInputError');
}
}
}
});
};
exports.checkRequiredI18nInputs = checkRequiredI18nInputs;