Url presets (#807)

This commit is contained in:
Carlos Valente
2024-03-08 23:10:43 +01:00
committed by GitHub
parent 10d7273ec0
commit ad71793cf3
54 changed files with 544 additions and 1109 deletions
@@ -1,31 +0,0 @@
import type { Alias, ErrorResponse } from 'ontime-types';
import { Request, Response } from 'express';
import { DataProvider } from '../../classes/data-provider/DataProvider.js';
import { failIsNotArray } from '../../utils/routerUtils.js';
export async function getAliases(_req: Request, res: Response<Alias[]>) {
const aliases = DataProvider.getAliases();
res.status(200).send(aliases);
}
export async function postAliases(req: Request, res: Response<Alias[] | ErrorResponse>) {
if (failIsNotArray(req.body, res)) {
return;
}
try {
const newAliases: Alias[] = [];
req.body.forEach((a) => {
newAliases.push({
enabled: a.enabled,
alias: a.alias,
pathAndParams: a.pathAndParams,
});
});
await DataProvider.setAliases(newAliases);
res.status(200).send(newAliases);
} catch (error) {
res.status(400).send({ message: String(error) });
}
}
@@ -1,8 +0,0 @@
import express from 'express';
import { getAliases, postAliases } from './aliases.controller.js';
import { validateAliases } from './aliases.validation.js';
export const router = express.Router();
router.get('/', getAliases);
router.post('/', validateAliases, postAliases);
+1 -1
View File
@@ -36,7 +36,7 @@ export async function patchPartialProjectFile(req: Request, res: Response<Databa
settings: req.body?.settings,
viewSettings: req.body?.viewSettings,
osc: req.body?.osc,
aliases: req.body?.aliases,
urlPresets: req.body?.urlPresets,
customFields: req.body?.customFields,
};
+2 -2
View File
@@ -1,6 +1,6 @@
import express from 'express';
import { router as aliasesRouter } from './aliases/aliases.router.js';
import { router as urlPresetsRouter } from './url-presets/urlPresets.router.js';
import { router as customFieldsRouter } from './custom-fields/customFields.router.js';
import { router as dbRouter } from './db/db.router.js';
import { router as httpRouter } from './http/http.router.js';
@@ -13,7 +13,6 @@ import { router as viewSettingsRouter } from './view-settings/viewSettings.route
export const appRouter = express.Router();
appRouter.use('/aliases', aliasesRouter);
appRouter.use('/custom-fields', customFieldsRouter);
appRouter.use('/db', dbRouter);
appRouter.use('/http', httpRouter);
@@ -22,4 +21,5 @@ appRouter.use('/project', projectRouter);
appRouter.use('/rundown', rundownRouter);
appRouter.use('/settings', settingsRouter);
appRouter.use('/sheets', sheetsRouter);
appRouter.use('/url-presets', urlPresetsRouter);
appRouter.use('/view-settings', viewSettingsRouter);
@@ -0,0 +1,28 @@
import type { ErrorResponse, URLPreset } from 'ontime-types';
import { Request, Response } from 'express';
import { DataProvider } from '../../classes/data-provider/DataProvider.js';
import { failIsNotArray } from '../../utils/routerUtils.js';
export async function getUrlPresets(_req: Request, res: Response<URLPreset[]>) {
const presets = DataProvider.getUrlPresets();
res.status(200).send(presets);
}
export async function postUrlPresets(req: Request, res: Response<URLPreset[] | ErrorResponse>) {
if (failIsNotArray(req.body, res)) {
return;
}
try {
const newPresets: URLPreset[] = req.body.map((preset) => ({
enabled: preset.enabled,
alias: preset.alias,
pathAndParams: preset.pathAndParams,
}));
await DataProvider.setUrlPresets(newPresets);
res.status(200).send(newPresets);
} catch (error) {
res.status(400).send({ message: String(error) });
}
}
@@ -0,0 +1,8 @@
import express from 'express';
import { getUrlPresets, postUrlPresets } from './urlPresets.controller.js';
import { validateUrlPresets } from './urlPresets.validation.js';
export const router = express.Router();
router.get('/', getUrlPresets);
router.post('/', validateUrlPresets, postUrlPresets);
@@ -2,9 +2,9 @@ import { body, validationResult } from 'express-validator';
import { Request, Response, NextFunction } from 'express';
/**
* @description Validates object for POST /ontime/aliases
* validate array of URL preset objects
*/
export const validateAliases = [
export const validateUrlPresets = [
body().isArray(),
body('*.enabled').isBoolean(),
body('*.alias').isString().trim(),