UNPKG

shyft-storage-connector

Version:
111 lines (88 loc) 3.68 kB
"use strict"; 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;