UNPKG

canner

Version:

Build CMS in few lines of code for different data sources

116 lines (99 loc) 3.42 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _forEach2 = _interopRequireDefault(require("lodash/forEach")); var _types = require("./types"); var _utils = require("./utils"); var _nullField = _interopRequireDefault(require("./nullField")); var pluralize = _interopRequireWildcard(require("pluralize")); var RelationField = /*#__PURE__*/ function () { function RelationField(_ref) { var rootSchema = _ref.rootSchema, schema = _ref.schema, key = _ref.key; (0, _classCallCheck2.default)(this, RelationField); (0, _defineProperty2.default)(this, "schema", void 0); (0, _defineProperty2.default)(this, "key", void 0); (0, _defineProperty2.default)(this, "relationSchema", void 0); (0, _defineProperty2.default)(this, "rootSchema", void 0); this.key = key; this.schema = schema; this.rootSchema = rootSchema; this.relationSchema = rootSchema[this.schema.relation.to]; } (0, _createClass2.default)(RelationField, [{ key: "exists", value: function exists() { return true; } }, { key: "getKey", value: function getKey() { return this.key; } }, { key: "getType", value: function getType() { return _types.types.RELATION; } }, { key: "isToOne", value: function isToOne() { return this.schema.relation && this.schema.relation.type === 'toOne'; } }, { key: "isToMany", value: function isToMany() { return this.schema.relation && this.schema.relation.type === 'toMany'; } }, { key: "relationTo", value: function relationTo() { return this.schema.relation.to; } }, { key: "getRelationFields", value: function getRelationFields() { return this.schema.relation.fields || []; } }, { key: "getTypename", value: function getTypename() { return (0, _utils.capitalizeFirstLetter)(pluralize.singular(this.relationTo())); } }, { key: "getChild", value: function getChild(fieldName) { if (!this.relationSchema || !this.relationSchema.items || !this.relationSchema.items.items || !this.relationSchema.items.items[fieldName]) { return new _nullField.default({ key: fieldName }); } var field = (0, _utils.createField)(fieldName, this.rootSchema, this.relationSchema.items.items[fieldName]); return field; } }, { key: "forEach", value: function forEach(visitor) { var _this = this; if (!this.relationSchema || !this.relationSchema.items || !this.relationSchema.items.items) { return; } (0, _forEach2.default)(this.relationSchema.items.items, function (item, key) { var field = (0, _utils.createField)(key, _this.rootSchema, _this.relationSchema.items.items[key]); visitor(field); }); } }]); return RelationField; }(); exports.default = RelationField;