split into db and data

This commit is contained in:
Mads Rasmussen
2023-12-07 16:05:10 +01:00
parent 985ca91115
commit 434978efc0
3 changed files with 71 additions and 72 deletions

View File

@@ -1,13 +1,6 @@
import { UmbEntityData } from './entity.data.js';
import { createEntityTreeItem } from './utils.js';
import {
DocumentTypeTreeItemResponseModel,
DocumentTypeResponseModel,
ContentTypeCompositionTypeModel,
DocumentTypeItemResponseModel,
} from '@umbraco-cms/backoffice/backend-api';
import { DocumentTypeResponseModel, DocumentTypeTreeItemResponseModel } from '@umbraco-cms/backoffice/backend-api';
type UmbMockDocumentTypeModel = DocumentTypeResponseModel & DocumentTypeTreeItemResponseModel;
export type UmbMockDocumentTypeModel = DocumentTypeResponseModel & DocumentTypeTreeItemResponseModel;
export const data: Array<UmbMockDocumentTypeModel> = [
{
@@ -1077,64 +1070,3 @@ export const data: Array<UmbMockDocumentTypeModel> = [
},
},
];
class UmbDocumentTypeData extends UmbEntityData<UmbMockDocumentTypeModel> {
constructor() {
super(data);
}
// TODO: Can we do this smarter so we don't need to make this for each mock data:
insert(item: DocumentTypeResponseModel) {
return super.insert(item);
}
update(id: string, item: DocumentTypeResponseModel) {
return super.save(id, item);
}
getTreeRoot(): Array<DocumentTypeTreeItemResponseModel> {
const rootItems = this.data.filter((item) => item.parentId === null);
return rootItems.map((item) => createDocumentTypeTreeItem(item));
}
getTreeItemChildren(id: string): Array<DocumentTypeTreeItemResponseModel> {
const childItems = this.data.filter((item) => item.parentId === id);
return childItems.map((item) => createDocumentTypeTreeItem(item));
}
getTreeItem(ids: Array<string>): Array<DocumentTypeTreeItemResponseModel> {
const items = this.data.filter((item) => ids.includes(item.id ?? ''));
return items.map((item) => createDocumentTypeTreeItem(item));
}
getAllowedTypesOf(id: string): Array<DocumentTypeTreeItemResponseModel> {
const documentType = this.getById(id);
const allowedTypeKeys = documentType?.allowedContentTypes?.map((documentType) => documentType.id) ?? [];
const items = this.data.filter((item) => allowedTypeKeys.includes(item.id ?? ''));
return items.map((item) => createDocumentTypeTreeItem(item));
}
getItems(ids: Array<string>): Array<DocumentTypeItemResponseModel> {
const items = this.data.filter((item) => ids.includes(item.id ?? ''));
return items.map((item) => createDocumentTypeItem(item));
}
}
export const createDocumentTypeTreeItem = (item: DocumentTypeResponseModel): DocumentTypeTreeItemResponseModel => {
return {
...createEntityTreeItem(item),
type: 'document-type',
isElement: item.isElement,
};
};
const createDocumentTypeItem = (item: DocumentTypeResponseModel): DocumentTypeItemResponseModel => {
return {
id: item.id,
name: item.name,
isElement: item.isElement,
icon: item.icon,
};
};
export const umbDocumentTypeData = new UmbDocumentTypeData();

View File

@@ -0,0 +1,69 @@
import { UmbEntityData } from '../entity.data.js';
import { createEntityTreeItem } from '../utils.js';
import { UmbMockDocumentTypeModel, data } from './document-type.data.js';
import {
DocumentTypeTreeItemResponseModel,
DocumentTypeResponseModel,
DocumentTypeItemResponseModel,
} from '@umbraco-cms/backoffice/backend-api';
class UmbDocumentTypeData extends UmbEntityData<UmbMockDocumentTypeModel> {
constructor() {
super(data);
}
// TODO: Can we do this smarter so we don't need to make this for each mock data:
insert(item: DocumentTypeResponseModel) {
return super.insert(item);
}
update(id: string, item: DocumentTypeResponseModel) {
return super.save(id, item);
}
getTreeRoot(): Array<DocumentTypeTreeItemResponseModel> {
const rootItems = this.data.filter((item) => item.parentId === null);
return rootItems.map((item) => createDocumentTypeTreeItem(item));
}
getTreeItemChildren(id: string): Array<DocumentTypeTreeItemResponseModel> {
const childItems = this.data.filter((item) => item.parentId === id);
return childItems.map((item) => createDocumentTypeTreeItem(item));
}
getTreeItem(ids: Array<string>): Array<DocumentTypeTreeItemResponseModel> {
const items = this.data.filter((item) => ids.includes(item.id ?? ''));
return items.map((item) => createDocumentTypeTreeItem(item));
}
getAllowedTypesOf(id: string): Array<DocumentTypeTreeItemResponseModel> {
const documentType = this.getById(id);
const allowedTypeKeys = documentType?.allowedContentTypes?.map((documentType) => documentType.id) ?? [];
const items = this.data.filter((item) => allowedTypeKeys.includes(item.id ?? ''));
return items.map((item) => createDocumentTypeTreeItem(item));
}
getItems(ids: Array<string>): Array<DocumentTypeItemResponseModel> {
const items = this.data.filter((item) => ids.includes(item.id ?? ''));
return items.map((item) => createDocumentTypeItem(item));
}
}
export const createDocumentTypeTreeItem = (item: DocumentTypeResponseModel): DocumentTypeTreeItemResponseModel => {
return {
...createEntityTreeItem(item),
type: 'document-type',
isElement: item.isElement,
};
};
const createDocumentTypeItem = (item: DocumentTypeResponseModel): DocumentTypeItemResponseModel => {
return {
id: item.id,
name: item.name,
isElement: item.isElement,
icon: item.icon,
};
};
export const umbDocumentTypeData = new UmbDocumentTypeData();

View File

@@ -1,10 +1,8 @@
import type {
ContentTreeItemResponseModel,
DocumentTreeItemResponseModel,
DocumentTypeTreeItemResponseModel,
EntityTreeItemResponseModel,
FolderTreeItemResponseModel,
DocumentTypeResponseModel,
FileSystemTreeItemPresentationModel,
DocumentResponseModel,
TextFileResponseModelBaseModel,