{"version":3,"file":"data-type-detail.repository-BSrx8XT7.js","sources":["../../../src/packages/data-type/repository/detail/data-type-detail.server.data-source.ts","../../../src/packages/data-type/repository/detail/data-type-detail.repository.ts"],"sourcesContent":["import type { UmbDataTypeDetailModel, UmbDataTypePropertyValueModel } from '../../types.js';\r\nimport { UMB_DATA_TYPE_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\tCreateDataTypeRequestModel,\r\n\tUpdateDataTypeRequestModel,\r\n} from '@umbraco-cms/backoffice/external/backend-api';\r\nimport { DataTypeService } 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 Data Type that fetches data from the server\r\n * @class UmbDataTypeServerDataSource\r\n * @implements {RepositoryDetailDataSource}\r\n */\r\nexport class UmbDataTypeServerDataSource implements UmbDetailDataSource {\r\n\t#host: UmbControllerHost;\r\n\r\n\t/**\r\n\t * Creates an instance of UmbDataTypeServerDataSource.\r\n\t * @param {UmbControllerHost} host - The controller host for this controller to be appended to\r\n\t * @memberof UmbDataTypeServerDataSource\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 Data Type scaffold\r\n\t * @param {(string | null)} parentUnique\r\n\t * @param preset\r\n\t * @returns { CreateDataTypeRequestModel }\r\n\t * @memberof UmbDataTypeServerDataSource\r\n\t */\r\n\tasync createScaffold(preset: Partial = {}) {\r\n\t\tconst data: UmbDataTypeDetailModel = {\r\n\t\t\tentityType: UMB_DATA_TYPE_ENTITY_TYPE,\r\n\t\t\tunique: UmbId.new(),\r\n\t\t\tname: '',\r\n\t\t\teditorAlias: undefined,\r\n\t\t\teditorUiAlias: null,\r\n\t\t\tvalues: [],\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 * Fetches a Data Type with the given id from the server\r\n\t * @param {string} unique\r\n\t * @returns {*}\r\n\t * @memberof UmbDataTypeServerDataSource\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, DataTypeService.getDataTypeById({ 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 dataType: UmbDataTypeDetailModel = {\r\n\t\t\tentityType: UMB_DATA_TYPE_ENTITY_TYPE,\r\n\t\t\tunique: data.id,\r\n\t\t\tname: data.name,\r\n\t\t\teditorAlias: data.editorAlias,\r\n\t\t\teditorUiAlias: data.editorUiAlias || null,\r\n\t\t\tvalues: data.values as Array,\r\n\t\t};\r\n\r\n\t\treturn { data: dataType };\r\n\t}\r\n\r\n\t/**\r\n\t * Inserts a new Data Type on the server\r\n\t * @param {UmbDataTypeDetailModel} model\r\n\t * @param parentUnique\r\n\t * @returns {*}\r\n\t * @memberof UmbDataTypeServerDataSource\r\n\t */\r\n\tasync create(model: UmbDataTypeDetailModel, parentUnique: string | null = null) {\r\n\t\tif (!model) throw new Error('Data Type is missing');\r\n\t\tif (!model.unique) throw new Error('Data Type unique is missing');\r\n\t\tif (!model.editorAlias) throw new Error('Property Editor Alias is missing');\r\n\t\tif (!model.editorUiAlias) throw new Error('Property Editor UI Alias is missing');\r\n\r\n\t\t// TODO: make data mapper to prevent errors\r\n\t\tconst requestBody: CreateDataTypeRequestModel = {\r\n\t\t\tid: model.unique,\r\n\t\t\tparent: parentUnique ? { id: parentUnique } : null,\r\n\t\t\tname: model.name,\r\n\t\t\teditorAlias: model.editorAlias,\r\n\t\t\teditorUiAlias: model.editorUiAlias,\r\n\t\t\tvalues: model.values,\r\n\t\t};\r\n\r\n\t\tconst { data, error } = await tryExecuteAndNotify(\r\n\t\t\tthis.#host,\r\n\t\t\tDataTypeService.postDataType({\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 DataType on the server\r\n\t * @param {UmbDataTypeDetailModel} DataType\r\n\t * @param model\r\n\t * @returns {*}\r\n\t * @memberof UmbDataTypeServerDataSource\r\n\t */\r\n\tasync update(model: UmbDataTypeDetailModel) {\r\n\t\tif (!model.unique) throw new Error('Unique is missing');\r\n\t\tif (!model.editorAlias) throw new Error('Property Editor Alias is missing');\r\n\t\tif (!model.editorUiAlias) throw new Error('Property Editor UI Alias is missing');\r\n\r\n\t\t// TODO: make data mapper to prevent errors\r\n\t\tconst requestBody: UpdateDataTypeRequestModel = {\r\n\t\t\tname: model.name,\r\n\t\t\teditorAlias: model.editorAlias,\r\n\t\t\teditorUiAlias: model.editorUiAlias,\r\n\t\t\tvalues: model.values,\r\n\t\t};\r\n\r\n\t\tconst { error } = await tryExecuteAndNotify(\r\n\t\t\tthis.#host,\r\n\t\t\tDataTypeService.putDataTypeById({\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 Data Type on the server\r\n\t * @param {string} unique\r\n\t * @returns {*}\r\n\t * @memberof UmbDataTypeServerDataSource\r\n\t */\r\n\tasync delete(unique: string) {\r\n\t\tif (!unique) throw new Error('Unique is missing');\r\n\r\n\t\treturn tryExecuteAndNotify(\r\n\t\t\tthis.#host,\r\n\t\t\tDataTypeService.deleteDataTypeById({\r\n\t\t\t\tid: unique,\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n}\r\n","import type { UmbDataTypeDetailModel } from '../../types.js';\r\nimport { UmbDataTypeServerDataSource } from './data-type-detail.server.data-source.js';\r\nimport type { UmbDataTypeDetailStore } from './data-type-detail.store.js';\r\nimport { UMB_DATA_TYPE_DETAIL_STORE_CONTEXT } from './data-type-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 UmbDataTypeDetailRepository extends UmbDetailRepositoryBase {\r\n\t#init: Promise;\r\n\t#detailStore?: UmbDataTypeDetailStore;\r\n\r\n\tconstructor(host: UmbControllerHost) {\r\n\t\tsuper(host, UmbDataTypeServerDataSource, UMB_DATA_TYPE_DETAIL_STORE_CONTEXT);\r\n\r\n\t\tthis.#init = Promise.all([\r\n\t\t\tthis.consumeContext(UMB_DATA_TYPE_DETAIL_STORE_CONTEXT, (instance) => {\r\n\t\t\t\tthis.#detailStore = instance;\r\n\t\t\t}).asPromise(),\r\n\t\t]);\r\n\t}\r\n\r\n\tasync byPropertyEditorUiAlias(propertyEditorUiAlias: string) {\r\n\t\tif (!propertyEditorUiAlias) throw new Error('propertyEditorUiAlias is missing');\r\n\t\tawait this.#init;\r\n\t\treturn this.#detailStore!.withPropertyEditorUiAlias(propertyEditorUiAlias);\r\n\t}\r\n}\r\n\r\nexport { UmbDataTypeDetailRepository as api };\r\n"],"names":["UmbDataTypeServerDataSource","#host","host","preset","UMB_DATA_TYPE_ENTITY_TYPE","UmbId","unique","data","error","tryExecuteAndNotify","DataTypeService","model","parentUnique","requestBody","UmbDataTypeDetailRepository","UmbDetailRepositoryBase","#init","#detailStore","UMB_DATA_TYPE_DETAIL_STORE_CONTEXT","instance","propertyEditorUiAlias"],"mappings":"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"}