@umbraco/json-models-builders
Version:
Builders and models for Umbraco Sites
63 lines • 1.94 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DocumentBuilder = void 0;
const documentValueBuilder_1 = require("./documentValueBuilder");
const documentVariantBuilder_1 = require("./documentVariantBuilder");
class DocumentBuilder {
documentValueBuilder;
documentVariantBuilder;
id;
parentId;
documentTypeId;
templateId;
constructor() {
this.documentValueBuilder = [];
this.documentVariantBuilder = [];
}
addValue() {
const builder = new documentValueBuilder_1.DocumentValueBuilder(this);
this.documentValueBuilder.push(builder);
return builder;
}
addVariant() {
const builder = new documentVariantBuilder_1.DocumentVariantBuilder(this);
this.documentVariantBuilder.push(builder);
return builder;
}
withId(id) {
this.id = id;
return this;
}
withParentId(parentId) {
this.parentId = parentId;
return this;
}
withDocumentTypeId(documentTypeId) {
this.documentTypeId = documentTypeId;
return this;
}
withTemplateId(templateId) {
this.templateId = templateId;
return this;
}
build() {
if (!this.id) {
const crypto = require('crypto');
this.id = crypto.randomUUID();
}
return {
values: this.documentValueBuilder.map((builder) => {
return builder.build();
}),
variants: this.documentVariantBuilder.map((builder) => {
return builder.build();
}),
id: this.id,
parent: this.parentId ? { id: this.parentId } : null,
documentType: { id: this.documentTypeId },
template: this.templateId ? { id: this.templateId } : null,
};
}
}
exports.DocumentBuilder = DocumentBuilder;
//# sourceMappingURL=documentBuilder.js.map