UNPKG

@sitecore/sc-contenthub-webclient-sdk

Version:

Sitecore Content Hub WebClient SDK.

64 lines 2.98 kB
import { RelationCardinality } from "../contracts/base/relation-cardinality"; import { RelationRole } from "../contracts/base/relation-role"; import { ChildToManyParentsRelation, } from "../contracts/base/relations/child-to-many-parents-relation"; import { ChildToOneParentRelation, } from "../contracts/base/relations/child-to-one-parent-relation"; import { ParentToManyChildrenRelation, } from "../contracts/base/relations/parent-to-many-children-relation"; import { ParentToOneChildRelation, } from "../contracts/base/relations/parent-to-one-child-relation"; import Guard from "../guard"; export class RelationFactory { constructor(client) { this._client = client; } createChildToManyParentsRelation(definition) { const relation = new ChildToManyParentsRelation(definition.name, null, this._client); return relation; } createChildToOneParentRelation(definition) { const relation = new ChildToOneParentRelation(definition.name, null, this._client); return relation; } createParentToManyChildrenRelation(definition) { const relation = new ParentToManyChildrenRelation(definition.name, null, this._client); return relation; } createParentToOneChildRelation(definition) { const relation = new ParentToOneChildRelation(definition.name, null, this._client); return relation; } createRelation(definition) { Guard.notNullOrUndefined(definition); let result = null; if (definition.role === RelationRole.Parent) { if (definition.cardinality === RelationCardinality.ManyToMany || definition.cardinality === RelationCardinality.OneToMany) { result = this.createParentToManyChildrenRelation(definition); } else if (definition.cardinality === RelationCardinality.OneToOne) { result = this.createParentToOneChildRelation(definition); } } else if (definition.role === RelationRole.Child) { if (definition.cardinality === RelationCardinality.ManyToMany) { result = this.createChildToManyParentsRelation(definition); } else if (definition.cardinality === RelationCardinality.OneToOne || definition.cardinality === RelationCardinality.OneToMany) { result = this.createChildToOneParentRelation(definition); } } if (result === null) { throw `Relation with name '${definition.name}', cardinality '${definition.cardinality}' and role '${definition.role}' not supported.`; //TODO } return result; } createRelations(definitions) { if (!definitions || !definitions.length) { return []; } const list = definitions.map(definition => { return this.createRelation(definition); }); return list; } } //# sourceMappingURL=relation-factory.js.map