{"version":3,"file":"document-detail.repository-Dpi406xc.js","sources":["../../../src/packages/documents/documents/repository/detail/document-detail.server.data-source.ts","../../../src/packages/documents/documents/repository/detail/document-detail.repository.ts"],"sourcesContent":["import type { UmbDocumentDetailModel } from '../../types.js';\r\nimport { UMB_DOCUMENT_ENTITY_TYPE } from '../../entity.js';\r\nimport { UmbId } from '@umbraco-cms/backoffice/id';\r\nimport type { UmbDetailDataSource } from '@umbraco-cms/backoffice/repository';\r\nimport type {\r\n\tCreateDocumentRequestModel,\r\n\tUpdateDocumentRequestModel,\r\n} from '@umbraco-cms/backoffice/external/backend-api';\r\nimport { DocumentService } from '@umbraco-cms/backoffice/external/backend-api';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport { tryExecuteAndNotify } from '@umbraco-cms/backoffice/resources';\r\n\r\n/**\r\n * A data source for the Document that fetches data from the server\r\n * @class UmbDocumentServerDataSource\r\n * @implements {RepositoryDetailDataSource}\r\n */\r\nexport class UmbDocumentServerDataSource implements UmbDetailDataSource {\r\n\t#host: UmbControllerHost;\r\n\r\n\t/**\r\n\t * Creates an instance of UmbDocumentServerDataSource.\r\n\t * @param {UmbControllerHost} host - The controller host for this controller to be appended to\r\n\t * @memberof UmbDocumentServerDataSource\r\n\t */\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tthis.#host = host;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new Document scaffold\r\n\t * @param preset\r\n\t * @returns { UmbDocumentDetailModel }\r\n\t * @memberof UmbDocumentServerDataSource\r\n\t */\r\n\tasync createScaffold(preset: Partial = {}) {\r\n\t\tconst data: UmbDocumentDetailModel = {\r\n\t\t\tentityType: UMB_DOCUMENT_ENTITY_TYPE,\r\n\t\t\tunique: UmbId.new(),\r\n\t\t\turls: [],\r\n\t\t\ttemplate: null,\r\n\t\t\tdocumentType: {\r\n\t\t\t\tunique: '',\r\n\t\t\t\tcollection: null,\r\n\t\t\t\ticon: null,\r\n\t\t\t},\r\n\t\t\tisTrashed: false,\r\n\t\t\tvalues: [],\r\n\t\t\tvariants: [],\r\n\t\t\t...preset,\r\n\t\t};\r\n\r\n\t\treturn { data };\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new variant scaffold.\r\n\t * @returns A new variant scaffold.\r\n\t */\r\n\t/*\r\n\t// TDOD: remove if not used\r\n\tcreateVariantScaffold(): UmbDocumentVariantModel {\r\n\t\treturn {\r\n\t\t\tstate: null,\r\n\t\t\tculture: null,\r\n\t\t\tsegment: null,\r\n\t\t\tname: '',\r\n\t\t\tpublishDate: null,\r\n\t\t\tcreateDate: null,\r\n\t\t\tupdateDate: null,\r\n\t\t};\r\n\t}\r\n\t*/\r\n\r\n\t/**\r\n\t * Fetches a Document with the given id from the server\r\n\t * @param {string} unique\r\n\t * @returns {*}\r\n\t * @memberof UmbDocumentServerDataSource\r\n\t */\r\n\tasync read(unique: string) {\r\n\t\tif (!unique) throw new Error('Unique is missing');\r\n\r\n\t\tconst { data, error } = await tryExecuteAndNotify(this.#host, DocumentService.getDocumentById({ id: unique }));\r\n\r\n\t\tif (error || !data) {\r\n\t\t\treturn { error };\r\n\t\t}\r\n\r\n\t\t// TODO: make data mapper to prevent errors\r\n\t\tconst document: UmbDocumentDetailModel = {\r\n\t\t\tentityType: UMB_DOCUMENT_ENTITY_TYPE,\r\n\t\t\tunique: data.id,\r\n\t\t\tvalues: data.values.map((value) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\teditorAlias: value.editorAlias,\r\n\t\t\t\t\tculture: value.culture || null,\r\n\t\t\t\t\tsegment: value.segment || null,\r\n\t\t\t\t\talias: value.alias,\r\n\t\t\t\t\tvalue: value.value,\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\tvariants: data.variants.map((variant) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tculture: variant.culture || null,\r\n\t\t\t\t\tsegment: variant.segment || null,\r\n\t\t\t\t\tstate: variant.state,\r\n\t\t\t\t\tname: variant.name,\r\n\t\t\t\t\tpublishDate: variant.publishDate || null,\r\n\t\t\t\t\tcreateDate: variant.createDate,\r\n\t\t\t\t\tupdateDate: variant.updateDate,\r\n\t\t\t\t\tscheduledPublishDate: variant.scheduledPublishDate || null,\r\n\t\t\t\t\tscheduledUnpublishDate: variant.scheduledUnpublishDate || null,\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\turls: data.urls.map((url) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tculture: url.culture || null,\r\n\t\t\t\t\turl: url.url,\r\n\t\t\t\t};\r\n\t\t\t}),\r\n\t\t\ttemplate: data.template ? { unique: data.template.id } : null,\r\n\t\t\tdocumentType: {\r\n\t\t\t\tunique: data.documentType.id,\r\n\t\t\t\tcollection: data.documentType.collection ? { unique: data.documentType.collection.id } : null,\r\n\t\t\t\ticon: data.documentType.icon,\r\n\t\t\t},\r\n\t\t\tisTrashed: data.isTrashed,\r\n\t\t};\r\n\r\n\t\treturn { data: document };\r\n\t}\r\n\r\n\t/**\r\n\t * Inserts a new Document on the server\r\n\t * @param {UmbDocumentDetailModel} model - Document Model\r\n\t * @param parentUnique\r\n\t * @returns {*}\r\n\t * @memberof UmbDocumentServerDataSource\r\n\t */\r\n\tasync create(model: UmbDocumentDetailModel, parentUnique: string | null = null) {\r\n\t\tif (!model) throw new Error('Document is missing');\r\n\t\tif (!model.unique) throw new Error('Document unique is missing');\r\n\r\n\t\t// TODO: make data mapper to prevent errors\r\n\t\tconst requestBody: CreateDocumentRequestModel = {\r\n\t\t\tid: model.unique,\r\n\t\t\tparent: parentUnique ? { id: parentUnique } : null,\r\n\t\t\tdocumentType: { id: model.documentType.unique },\r\n\t\t\ttemplate: model.template ? { id: model.template.unique } : null,\r\n\t\t\tvalues: model.values,\r\n\t\t\tvariants: model.variants,\r\n\t\t};\r\n\r\n\t\tconst { data, error } = await tryExecuteAndNotify(\r\n\t\t\tthis.#host,\r\n\t\t\tDocumentService.postDocument({\r\n\t\t\t\trequestBody,\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\tif (data) {\r\n\t\t\treturn this.read(data);\r\n\t\t}\r\n\r\n\t\treturn { error };\r\n\t}\r\n\r\n\t/**\r\n\t * Updates a Document on the server\r\n\t * @param {UmbDocumentDetailModel} model - Document Model\r\n\t * @returns {*}\r\n\t * @memberof UmbDocumentServerDataSource\r\n\t */\r\n\tasync update(model: UmbDocumentDetailModel) {\r\n\t\tif (!model.unique) throw new Error('Unique is missing');\r\n\r\n\t\t// TODO: make data mapper to prevent errors\r\n\t\tconst requestBody: UpdateDocumentRequestModel = {\r\n\t\t\ttemplate: model.template ? { id: model.template.unique } : null,\r\n\t\t\tvalues: model.values,\r\n\t\t\tvariants: model.variants,\r\n\t\t};\r\n\r\n\t\tconst { error } = await tryExecuteAndNotify(\r\n\t\t\tthis.#host,\r\n\t\t\tDocumentService.putDocumentById({\r\n\t\t\t\tid: model.unique,\r\n\t\t\t\trequestBody,\r\n\t\t\t}),\r\n\t\t);\r\n\r\n\t\tif (!error) {\r\n\t\t\treturn this.read(model.unique);\r\n\t\t}\r\n\r\n\t\treturn { error };\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes a Document on the server\r\n\t * @param {string} unique\r\n\t * @returns {*}\r\n\t * @memberof UmbDocumentServerDataSource\r\n\t */\r\n\tasync delete(unique: string) {\r\n\t\tif (!unique) throw new Error('Unique is missing');\r\n\t\treturn tryExecuteAndNotify(this.#host, DocumentService.deleteDocumentById({ id: unique }));\r\n\t}\r\n}\r\n","import type { UmbDocumentDetailModel } from '../../types.js';\r\nimport { UmbDocumentServerDataSource } from './document-detail.server.data-source.js';\r\nimport { UMB_DOCUMENT_DETAIL_STORE_CONTEXT } from './document-detail.store.context-token.js';\r\nimport type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';\r\nimport { UmbDetailRepositoryBase } from '@umbraco-cms/backoffice/repository';\r\nexport class UmbDocumentDetailRepository extends UmbDetailRepositoryBase {\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host, UmbDocumentServerDataSource, UMB_DOCUMENT_DETAIL_STORE_CONTEXT);\r\n\t}\r\n}\r\n\r\nexport { UmbDocumentDetailRepository as api };\r\n"],"names":["UmbDocumentServerDataSource","#host","host","preset","UMB_DOCUMENT_ENTITY_TYPE","UmbId","unique","data","error","tryExecuteAndNotify","DocumentService","value","variant","url","model","parentUnique","requestBody","UmbDocumentDetailRepository","UmbDetailRepositoryBase","UMB_DOCUMENT_DETAIL_STORE_CONTEXT"],"mappings":"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"}