forest-express
Version:
Official package for all Forest Express Lianas
51 lines (49 loc) • 2.22 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _ = require('lodash');
var _require = require('@forestadmin/context'),
inject = _require.inject;
exports.getBelongsToAssociations = function (schema) {
return _.filter(schema.fields, function (field) {
return field.reference && !_.isArray(field.type) && !field.isVirtual && !field.integration;
});
};
exports.getHasManyAssociations = function (schema) {
return _.filter(schema.fields, function (field) {
return _.isArray(field.type) && !field.isVirtual && !field.integration;
});
};
function getField(schema, fieldName) {
var _fieldName$split = fieldName.split(':'),
_fieldName$split2 = (0, _slicedToArray2["default"])(_fieldName$split, 1),
fieldNameToSearch = _fieldName$split2[0];
return schema.fields.find(function (field) {
return field.field === fieldNameToSearch;
});
}
exports.getField = getField;
exports.getSmartField = function (schema, fieldName) {
var field = getField(schema, fieldName);
if (!field) return null;
// If the field is not virtual but the field requested is something like "myField:nestedField"
// then we want to retrieve nestedField to check if nestedField isVirtual
if (!field.isVirtual && fieldName.includes(':') && field.reference) {
var _field$reference$spli = field.reference.split('.'),
_field$reference$spli2 = (0, _slicedToArray2["default"])(_field$reference$spli, 1),
referencedModel = _field$reference$spli2[0];
var _inject = inject(),
schemasGenerator = _inject.schemasGenerator;
var referenceSchema = schemasGenerator.schemas[referencedModel];
return exports.getSmartField(referenceSchema, fieldName.substring(fieldName.indexOf(':') + 1));
}
return field.isVirtual ? field : null;
};
exports.isSmartField = function (schema, fieldName) {
var fieldFound = exports.getSmartField(schema, fieldName);
return !!fieldFound && !!fieldFound.isVirtual;
};
exports.getFieldType = function (schema, fieldName) {
var fieldFound = getField(schema, fieldName);
return fieldFound && fieldFound.type;
};