add handlers and data
This commit is contained in:
@@ -7,6 +7,7 @@ import {
|
||||
TemplateResponseModel,
|
||||
TemplateScaffoldResponseModel,
|
||||
CreateTemplateRequestModel,
|
||||
TemplateItemResponseModel,
|
||||
} from '@umbraco-cms/backoffice/backend-api';
|
||||
|
||||
type TemplateDBItem = TemplateResponseModel & EntityTreeItemResponseModel;
|
||||
@@ -21,6 +22,11 @@ const createTemplate = (dbItem: TemplateDBItem): TemplateResponseModel => {
|
||||
};
|
||||
};
|
||||
|
||||
const createTemplateItem = (dbItem: TemplateDBItem): TemplateItemResponseModel => ({
|
||||
name: dbItem.name,
|
||||
id: dbItem.id,
|
||||
});
|
||||
|
||||
export const data: Array<TemplateDBItem> = [
|
||||
{
|
||||
$type: '',
|
||||
@@ -91,10 +97,63 @@ export const createTemplateScaffold = (masterTemplateAlias: string) => {
|
||||
return `Template Scaffold Mock for master template: ${masterTemplateAlias}`;
|
||||
};
|
||||
|
||||
export const templateQuerySettings = {
|
||||
contentTypeAliases: [],
|
||||
properties: [
|
||||
{
|
||||
alias: 'Id',
|
||||
type: 'Integer',
|
||||
},
|
||||
{
|
||||
alias: 'Name',
|
||||
type: 'String',
|
||||
},
|
||||
{
|
||||
alias: 'CreateDate',
|
||||
type: 'DateTime',
|
||||
},
|
||||
{
|
||||
alias: 'UpdateDate',
|
||||
type: 'DateTime',
|
||||
},
|
||||
],
|
||||
operators: [
|
||||
{
|
||||
operator: 'Equals',
|
||||
applicableTypes: ['Integer', 'String'],
|
||||
},
|
||||
{
|
||||
operator: 'NotEquals',
|
||||
applicableTypes: ['Integer', 'String'],
|
||||
},
|
||||
{
|
||||
operator: 'LessThan',
|
||||
applicableTypes: ['Integer', 'DateTime'],
|
||||
},
|
||||
{
|
||||
operator: 'LessThanEqualTo',
|
||||
applicableTypes: ['Integer', 'DateTime'],
|
||||
},
|
||||
{
|
||||
operator: 'GreaterThan',
|
||||
applicableTypes: ['Integer', 'DateTime'],
|
||||
},
|
||||
{
|
||||
operator: 'GreaterThanEqualTo',
|
||||
applicableTypes: ['Integer', 'DateTime'],
|
||||
},
|
||||
{
|
||||
operator: 'Contains',
|
||||
applicableTypes: ['String'],
|
||||
},
|
||||
{
|
||||
operator: 'NotContains',
|
||||
applicableTypes: ['String'],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
// Temp mocked database
|
||||
// TODO: all properties are optional in the server schema. I don't think this is correct.
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore
|
||||
class UmbTemplateData extends UmbEntityData<TemplateDBItem> {
|
||||
constructor() {
|
||||
super(data);
|
||||
@@ -105,12 +164,25 @@ class UmbTemplateData extends UmbEntityData<TemplateDBItem> {
|
||||
return item ? createTemplate(item) : undefined;
|
||||
}
|
||||
|
||||
getScaffold(masterTemplateAlias: string): TemplateScaffoldResponseModel {
|
||||
getItemById(id: string): TemplateItemResponseModel | null {
|
||||
const item = this.data.find((item) => item.id === id);
|
||||
return item ? createTemplateItem(item) : null;
|
||||
}
|
||||
|
||||
getScaffold(): TemplateScaffoldResponseModel {
|
||||
return {
|
||||
content: `Template Scaffold Mock: Layout = ${masterTemplateAlias || null};`,
|
||||
content:
|
||||
'@using Umbraco.Cms.Web.Common.PublishedModels;\r\n@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage\r\n@{\r\n\tLayout = null;\r\n}',
|
||||
};
|
||||
}
|
||||
|
||||
getItems(ids: string[]): TemplateItemResponseModel[] {
|
||||
const items = ids.map((id) => this.getItemById(id)).filter((item) => item !== null) as TemplateItemResponseModel[];
|
||||
return items;
|
||||
}
|
||||
|
||||
getTemplateQuerySettings = () => templateQuerySettings;
|
||||
|
||||
create(templateData: CreateTemplateRequestModel) {
|
||||
const template = {
|
||||
$type: '',
|
||||
|
||||
@@ -3,8 +3,8 @@ import { umbTemplateData } from '../data/template.data';
|
||||
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
|
||||
import { CreateTemplateRequestModel, UpdateTemplateRequestModel } from '@umbraco-cms/backoffice/backend-api';
|
||||
|
||||
// TODO: add schema
|
||||
export const handlers = [
|
||||
//#region TREE
|
||||
rest.get(umbracoPath('/tree/template/root'), (req, res, ctx) => {
|
||||
const response = umbTemplateData.getTreeRoot();
|
||||
return res(ctx.status(200), ctx.json(response));
|
||||
@@ -26,15 +26,30 @@ export const handlers = [
|
||||
return res(ctx.status(200), ctx.json(items));
|
||||
}),
|
||||
|
||||
rest.get(umbracoPath('/template/scaffold'), (req, res, ctx) => {
|
||||
const masterTemplateAlias = req.url.searchParams.get('masterTemplateAlias');
|
||||
if (!masterTemplateAlias) return;
|
||||
//#endregion
|
||||
|
||||
const response = umbTemplateData.getScaffold(masterTemplateAlias);
|
||||
//#region TEMPLATE
|
||||
|
||||
rest.get(umbracoPath('/template/scaffold'), (req, res, ctx) => {
|
||||
const response = umbTemplateData.getScaffold();
|
||||
return res(ctx.status(200), ctx.json(response));
|
||||
}),
|
||||
|
||||
//This handler must come before the /template/:id handler otherwise it hits the wrong handler
|
||||
rest.get(umbracoPath('/template/item'), (req, res, ctx) => {
|
||||
const id = req.url.searchParams.getAll('id');
|
||||
if (!id) return;
|
||||
const response = umbTemplateData.getItems(id);
|
||||
return res(ctx.status(200), ctx.json(response));
|
||||
}),
|
||||
|
||||
rest.get(umbracoPath('/template/query/settings'), (req, res, ctx) => {
|
||||
const response = umbTemplateData.getTemplateQuerySettings();
|
||||
return res(ctx.status(200), ctx.json(response));
|
||||
}),
|
||||
|
||||
rest.get(umbracoPath('/template/:id'), (req, res, ctx) => {
|
||||
console.log('template/:id', req.params);
|
||||
const id = req.params.id as string;
|
||||
if (!id) return;
|
||||
|
||||
@@ -58,4 +73,15 @@ export const handlers = [
|
||||
const created = umbTemplateData.create(data);
|
||||
return res(ctx.status(200), ctx.json(created));
|
||||
}),
|
||||
|
||||
rest.delete<UpdateTemplateRequestModel>(umbracoPath('/template/:id'), async (req, res, ctx) => {
|
||||
const id = req.params.id as string;
|
||||
const data = await req.json();
|
||||
if (!id) return;
|
||||
|
||||
umbTemplateData.delete([data]);
|
||||
return res(ctx.status(200));
|
||||
}),
|
||||
|
||||
//#endregion
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user