shyft-storage-connector
Version:
Storage connector for Shyft
111 lines (88 loc) • 3.68 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.i18nTransformFilterAttributeName = exports.i18nDataSerializer = exports.i18nDataParser = void 0;
var _StorageTypePostgres = _interopRequireDefault(require("./StorageTypePostgres"));
var _shyft = require("shyft");
var i18nDataParser = function i18nDataParser(value, data, entity, _ref) {
var dataShaperMap = _ref.dataShaperMap;
var i18nAttributeNames = entity.getI18nAttributeNames();
if (!i18nAttributeNames || !data) {
return data;
}
var languages = _StorageTypePostgres["default"].getStorageConfiguration().getParentConfiguration().getLanguages();
i18nAttributeNames.map(function (attributeName) {
var attributeStorageName = dataShaperMap[attributeName];
var i18nValues = data.i18n ? data.i18n[attributeStorageName] || {} : {};
languages.map(function (language, langIdx) {
var key = "".concat(attributeName, ".i18n");
data[key] = data[key] || {};
if (langIdx === 0) {
data[key][language] = data[attributeName];
} else {
data[key][language] = i18nValues[language];
}
});
});
return null;
};
exports.i18nDataParser = i18nDataParser;
var i18nDataSerializer = function i18nDataSerializer(value, data, entity, mutation, _ref2) {
var dataShaperMap = _ref2.dataShaperMap;
var i18nAttributeNames = entity.getI18nAttributeNames();
if (!i18nAttributeNames || !data) {
return data;
}
var result = {};
var languages = _StorageTypePostgres["default"].getStorageConfiguration().getParentConfiguration().getLanguages();
i18nAttributeNames.map(function (attributeName) {
var key = "".concat(attributeName, ".i18n");
if (!data[key]) {
return;
}
Object.keys(data[key]).map(function (language) {
if (!languages.includes(language)) {
throw new _shyft.CustomError("Unknown language '".concat(language, "' provided in translation of mutation '").concat(mutation.name, "'"), 'I18nError');
}
});
var attributeStorageName = dataShaperMap[attributeName];
languages.map(function (language, langIdx) {
if (langIdx === 0) {
if (typeof data[attributeName] === 'undefined') {
if (typeof data[key][language] !== 'undefined') {
data[attributeName] = data[key][language];
}
}
} else {
if (typeof data[key][language] !== 'undefined') {
result[attributeStorageName] = result[attributeStorageName] || {};
result[attributeStorageName][language] = data[key][language];
}
}
});
});
return result;
};
exports.i18nDataSerializer = i18nDataSerializer;
var i18nTransformFilterAttributeName = function i18nTransformFilterAttributeName(context, entity, modelRegistry) {
if (!context || !entity || !modelRegistry) {
return function (attributeName) {
return attributeName;
};
}
var i18nLanguage = context.i18nLanguage,
i18nDefaultLanguage = context.i18nDefaultLanguage;
var attributes = entity.getAttributes();
var reverseDataShaperMap = modelRegistry[entity.name].reverseDataShaperMap;
return function (storageAttributeName) {
var attributeName = reverseDataShaperMap[storageAttributeName];
var attribute = attributes[attributeName];
if (!attribute || !attribute.i18n || i18nLanguage === i18nDefaultLanguage) {
return storageAttributeName;
}
return "i18n->'".concat(storageAttributeName, "'->>'").concat(i18nLanguage, "'");
};
};
exports.i18nTransformFilterAttributeName = i18nTransformFilterAttributeName;