add overview handlers

This commit is contained in:
Mads Rasmussen
2024-01-15 13:11:40 +01:00
parent 140e8bf1e3
commit 4140e78aec
7 changed files with 43 additions and 28 deletions

View File

@@ -7,7 +7,12 @@ import { textFileItemMapper } from '../utils.js';
import { UmbMockStylesheetModel, data } from './stylesheet.data.js';
import { PagedStylesheetOverviewResponseModel } from '@umbraco-cms/backoffice/backend-api';
class UmbStylesheetData extends UmbFileSystemMockDbBase<UmbMockStylesheetModel> {
interface UmbMockPaginationModel {
skip?: number;
take?: number;
}
class UmbStylesheetMockDb extends UmbFileSystemMockDbBase<UmbMockStylesheetModel> {
tree = new UmbMockFileSystemTreeManager<UmbMockStylesheetModel>(this);
item = new UmbMockFileSystemItemManager<UmbMockStylesheetModel>(this);
folder = new UmbMockFileSystemFolderManager<UmbMockStylesheetModel>(this);
@@ -17,12 +22,19 @@ class UmbStylesheetData extends UmbFileSystemMockDbBase<UmbMockStylesheetModel>
super(data);
}
getAllStylesheets(): PagedStylesheetOverviewResponseModel {
return {
items: this.data.map((item) => textFileItemMapper(item)),
total: this.data.map((item) => !item.isFolder).length,
};
getOverview(filterOptions: UmbMockPaginationModel = { skip: 0, take: 100 }): PagedStylesheetOverviewResponseModel {
const mockItems = this.getData();
const files = mockItems.filter((item) => item.isFolder === false);
const paginatedFiles = files.slice(filterOptions.skip, filterOptions.skip! + filterOptions.take!);
const responseItems = paginatedFiles.map((item) => {
return {
name: item.name,
path: item.path,
};
});
return { items: responseItems, total: mockItems.length };
}
}
export const umbStylesheetData = new UmbStylesheetData(data);
export const umbStylesheetMockDb = new UmbStylesheetMockDb(data);

View File

@@ -1,5 +1,5 @@
const { rest } = window.MockServiceWorker;
import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js';
import { umbStylesheetMockDb } from '../../data/stylesheet/stylesheet.db.js';
import { UMB_SLUG } from './slug.js';
import { CreateStylesheetRequestModel, UpdateStylesheetRequestModel } from '@umbraco-cms/backoffice/backend-api';
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
@@ -8,7 +8,7 @@ export const detailHandlers = [
rest.post(umbracoPath(UMB_SLUG), async (req, res, ctx) => {
const requestBody = (await req.json()) as CreateStylesheetRequestModel;
if (!requestBody) return res(ctx.status(400, 'no body found'));
const path = umbStylesheetData.file.create(requestBody);
const path = umbStylesheetMockDb.file.create(requestBody);
return res(
ctx.status(201),
ctx.set({
@@ -20,14 +20,14 @@ export const detailHandlers = [
rest.get(umbracoPath(`${UMB_SLUG}/:path`), (req, res, ctx) => {
const path = req.params.path as string;
if (!path) return res(ctx.status(400));
const response = umbStylesheetData.file.read(decodeURIComponent(path));
const response = umbStylesheetMockDb.file.read(decodeURIComponent(path));
return res(ctx.status(200), ctx.json(response));
}),
rest.delete(umbracoPath(`${UMB_SLUG}/:path`), (req, res, ctx) => {
const path = req.params.path as string;
if (!path) return res(ctx.status(400));
umbStylesheetData.file.delete(decodeURIComponent(path));
umbStylesheetMockDb.file.delete(decodeURIComponent(path));
return res(ctx.status(200));
}),
@@ -36,7 +36,7 @@ export const detailHandlers = [
if (!path) return res(ctx.status(400));
const requestBody = (await req.json()) as UpdateStylesheetRequestModel;
if (!requestBody) return res(ctx.status(400, 'no body found'));
umbStylesheetData.file.update(decodeURIComponent(path), requestBody);
umbStylesheetMockDb.file.update(decodeURIComponent(path), requestBody);
return res(ctx.status(200));
}),
];

View File

@@ -1,5 +1,5 @@
const { rest } = window.MockServiceWorker;
import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js';
import { umbStylesheetMockDb } from '../../data/stylesheet/stylesheet.db.js';
import { UMB_SLUG } from './slug.js';
import { CreateStylesheetFolderRequestModel } from '@umbraco-cms/backoffice/backend-api';
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
@@ -9,7 +9,7 @@ export const folderHandlers = [
const requestBody = (await req.json()) as CreateStylesheetFolderRequestModel;
if (!requestBody) return res(ctx.status(400, 'no body found'));
const path = umbStylesheetData.folder.create(requestBody);
const path = umbStylesheetMockDb.folder.create(requestBody);
return res(
ctx.status(201),
@@ -22,14 +22,14 @@ export const folderHandlers = [
rest.get(umbracoPath(`${UMB_SLUG}/folder/:path`), (req, res, ctx) => {
const path = req.params.path as string;
if (!path) return res(ctx.status(400));
const response = umbStylesheetData.folder.read(decodeURIComponent(path));
const response = umbStylesheetMockDb.folder.read(decodeURIComponent(path));
return res(ctx.status(200), ctx.json(response));
}),
rest.delete(umbracoPath(`${UMB_SLUG}/folder/:path`), (req, res, ctx) => {
const path = req.params.path as string;
if (!path) return res(ctx.status(400));
umbStylesheetData.folder.delete(decodeURIComponent(path));
umbStylesheetMockDb.folder.delete(decodeURIComponent(path));
return res(ctx.status(200));
}),
];

View File

@@ -1,5 +1,5 @@
const { rest } = window.MockServiceWorker;
import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js';
import { umbStylesheetMockDb } from '../../data/stylesheet/stylesheet.db.js';
import { UMB_SLUG } from './slug.js';
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
@@ -7,7 +7,7 @@ export const itemHandlers = [
rest.get(umbracoPath(`${UMB_SLUG}/item`), (req, res, ctx) => {
const paths = req.url.searchParams.getAll('paths');
if (!paths) return res(ctx.status(400, 'no body found'));
const items = umbStylesheetData.item.getItems(paths);
const items = umbStylesheetMockDb.item.getItems(paths);
return res(ctx.status(200), ctx.json(items));
}),
];

View File

@@ -1,13 +1,16 @@
const { rest } = window.MockServiceWorker;
import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js';
import { umbStylesheetMockDb } from '../../data/stylesheet/stylesheet.db.js';
import { UMB_SLUG } from './slug.js';
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
export const overviewHandlers = [
rest.get(umbracoPath(`${UMB_SLUG}/overview`), (req, res, ctx) => {
const path = req.url.searchParams.get('path');
if (!path) return;
const response = umbStylesheetData.getAllStylesheets();
rest.get(umbracoPath(`${UMB_SLUG}/overview`), async (req, res, ctx) => {
const skipParam = req.url.searchParams.get('skip');
const takeParam = req.url.searchParams.get('take');
const response = umbStylesheetMockDb.getOverview({
skip: skipParam ? parseInt(skipParam) : undefined,
take: takeParam ? parseInt(takeParam) : undefined,
});
return res(ctx.status(200), ctx.json(response));
}),
];

View File

@@ -1,5 +1,5 @@
const { rest } = window.MockServiceWorker;
import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js';
import { umbStylesheetMockDb } from '../../data/stylesheet/stylesheet.db.js';
import { UMB_SLUG } from './slug.js';
import { RenameStylesheetRequestModel } from '@umbraco-cms/backoffice/backend-api';
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
@@ -12,7 +12,7 @@ export const renameHandlers = [
const requestBody = (await req.json()) as RenameStylesheetRequestModel;
if (!requestBody) return res(ctx.status(400, 'no body found'));
const newPath = umbStylesheetData.file.rename(decodeURIComponent(path), requestBody.name);
const newPath = umbStylesheetMockDb.file.rename(decodeURIComponent(path), requestBody.name);
return res(
ctx.status(201),

View File

@@ -1,18 +1,18 @@
const { rest } = window.MockServiceWorker;
import { umbStylesheetData } from '../../data/stylesheet/stylesheet.db.js';
import { umbStylesheetMockDb } from '../../data/stylesheet/stylesheet.db.js';
import { UMB_SLUG } from './slug.js';
import { umbracoPath } from '@umbraco-cms/backoffice/utils';
export const treeHandlers = [
rest.get(umbracoPath(`/tree${UMB_SLUG}/root`), (req, res, ctx) => {
const response = umbStylesheetData.tree.getRoot();
const response = umbStylesheetMockDb.tree.getRoot();
return res(ctx.status(200), ctx.json(response));
}),
rest.get(umbracoPath(`/tree${UMB_SLUG}/children`), (req, res, ctx) => {
const parentPath = req.url.searchParams.get('parentPath');
if (!parentPath) return res(ctx.status(400));
const response = umbStylesheetData.tree.getChildrenOf(parentPath);
const response = umbStylesheetMockDb.tree.getChildrenOf(parentPath);
return res(ctx.status(200), ctx.json(response));
}),
];