@sitecore/sc-contenthub-webclient-sdk
Version:
Sitecore Content Hub WebClient SDK.
95 lines • 4.56 kB
JavaScript
import Guard from "../../guard";
import { CultureLoadOption } from "./culture-load-option";
import { EntityLoadConfiguration } from "./entity-load-configuration";
import { LoadOption } from "./load-options";
import { PropertyLoadOption } from "./property-load-option";
import { RelationLoadOption } from "./relation-load-option";
import { RelationSpecification } from "./relation-specification";
export class EntityLoadConfigurationBuilder {
constructor(entityLoadConfiguration) {
this._entityLoadConfiguration = new EntityLoadConfiguration();
if (entityLoadConfiguration)
this._entityLoadConfiguration = entityLoadConfiguration.deepClone();
}
inCultures(option) {
Guard.notNullOrUndefined(option);
if (option instanceof Array) {
this._entityLoadConfiguration.cultureLoadOption =
this._entityLoadConfiguration.cultureLoadOption || new CultureLoadOption();
this._entityLoadConfiguration.cultureLoadOption.loadOption = LoadOption.Custom;
this._entityLoadConfiguration.cultureLoadOption.cultures = [
...new Set((this._entityLoadConfiguration.cultureLoadOption.cultures || []).concat(option)),
];
}
else {
this._entityLoadConfiguration.cultureLoadOption =
this._entityLoadConfiguration.cultureLoadOption || new CultureLoadOption();
this._entityLoadConfiguration.cultureLoadOption.loadOption = option;
}
return this;
}
inCulture(culture) {
Guard.notUndefined(culture);
Guard.stringNotNullOrEmpty(culture);
return this.inCultures([culture]);
}
withProperties(option) {
Guard.notNullOrUndefined(option);
if (option instanceof Array) {
this._entityLoadConfiguration.propertyLoadOption =
this._entityLoadConfiguration.propertyLoadOption || new PropertyLoadOption();
this._entityLoadConfiguration.propertyLoadOption.loadOption = LoadOption.Custom;
this._entityLoadConfiguration.propertyLoadOption.properties = [
...new Set((this._entityLoadConfiguration.propertyLoadOption.properties || []).concat(option)),
];
}
else {
this._entityLoadConfiguration.propertyLoadOption =
this._entityLoadConfiguration.propertyLoadOption || new PropertyLoadOption();
this._entityLoadConfiguration.propertyLoadOption.loadOption = option;
}
return this;
}
withProperty(property) {
Guard.notUndefined(property);
Guard.stringNotNullOrEmpty(property);
return this.withProperties([property]);
}
withRelations(option) {
Guard.notNullOrUndefined(option);
if (option instanceof Array) {
let relationSpecifications = option.map(relation => {
return typeof relation === "string" ? new RelationSpecification(relation) : relation;
});
this._entityLoadConfiguration.relationLoadOption =
this._entityLoadConfiguration.relationLoadOption || new RelationLoadOption();
this._entityLoadConfiguration.relationLoadOption.loadOption = LoadOption.Custom;
relationSpecifications = relationSpecifications.filter(value => {
return (this._entityLoadConfiguration.relationLoadOption.relations.findIndex(relationValue => {
if (typeof value === "string") {
return relationValue.name === value;
}
else {
return relationValue.deepEquals(value);
}
}) === -1);
});
this._entityLoadConfiguration.relationLoadOption.relations = (this._entityLoadConfiguration.relationLoadOption.relations || []).concat(relationSpecifications);
}
else {
this._entityLoadConfiguration.relationLoadOption =
this._entityLoadConfiguration.relationLoadOption || new RelationLoadOption();
this._entityLoadConfiguration.relationLoadOption.loadOption = option;
}
return this;
}
withRelation(relation, role) {
Guard.notUndefined(relation);
Guard.stringNotNullOrEmpty(relation);
return this.withRelations([new RelationSpecification(relation, role)]);
}
build() {
return this._entityLoadConfiguration.deepClone();
}
}
//# sourceMappingURL=entity-load-configuration-builder.js.map