@sitecore/sc-contenthub-webclient-sdk
Version:
Sitecore Content Hub WebClient SDK.
64 lines • 2.98 kB
JavaScript
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