177 lines
4 KiB
JavaScript
177 lines
4 KiB
JavaScript
|
|
import {
|
|
Router
|
|
} from "express";
|
|
|
|
import {
|
|
Template as TemplateTable,
|
|
Element as ElementTable,
|
|
Variable as VariableTable
|
|
} from "../sequelize/template.model.mjs";
|
|
|
|
|
|
export var Routes = Router();
|
|
|
|
|
|
Routes.get('/templates', async function (Request, Response)
|
|
{
|
|
let TemplateList = await TemplateTable.findAll({
|
|
include: [
|
|
ElementTable,
|
|
VariableTable
|
|
]
|
|
});
|
|
|
|
// convert to raw object
|
|
TemplateList = JSON.parse(JSON.stringify(TemplateList));
|
|
|
|
// sort templates by name
|
|
TemplateList.sort(function (a, b) {
|
|
if (a.name < b.name) return -1;
|
|
if (a.name > b.name) return 1;
|
|
return 0;
|
|
});
|
|
|
|
Response.send(TemplateList);
|
|
})
|
|
|
|
|
|
Routes.get('/template/:templateID', async function (Request, Response)
|
|
{
|
|
let template = await TemplateTable.findByPk(Request.params.templateID, {
|
|
include: [
|
|
ElementTable,
|
|
VariableTable
|
|
]
|
|
});
|
|
|
|
// parse JOSN configs from elements
|
|
template.elements = template.elements.map((element) => {
|
|
element.config = JSON.parse(element.config);
|
|
return element;
|
|
});
|
|
|
|
Response.send(template);
|
|
})
|
|
|
|
|
|
Routes.post('/template', async function (Request, Response)
|
|
{
|
|
let Template = await TemplateTable.create({
|
|
name: Request.body.name,
|
|
width: Request.body.width,
|
|
height: Request.body.height
|
|
});
|
|
|
|
Response.status(200);
|
|
Response.send(Template);
|
|
})
|
|
|
|
Routes.put('/template', async function (Request, Response)
|
|
{
|
|
let Template = await TemplateTable.findByPk(Request.body.templateId);
|
|
|
|
await Template.update({
|
|
name: Request.body.name,
|
|
width: Request.body.width,
|
|
height: Request.body.height
|
|
});
|
|
|
|
Response.status(200);
|
|
Response.send(Template);
|
|
})
|
|
|
|
|
|
Routes.delete('/template', async function (Request, Response)
|
|
{
|
|
let Template = await TemplateTable.findByPk(Request.body.templateId);
|
|
await Template.destroy();
|
|
|
|
Response.status(200);
|
|
Response.end();
|
|
})
|
|
|
|
|
|
Routes.post('/variable', async function (Request, Response)
|
|
{
|
|
let Template = await TemplateTable.findByPk(Request.body.templateId)
|
|
|
|
let Variable = await Template.createVariable({
|
|
name: Request.body.name,
|
|
label: Request.body.label,
|
|
regex: Request.body.regex,
|
|
example: Request.body.example,
|
|
default: Request.body.default
|
|
});
|
|
|
|
Response.status(200);
|
|
Response.send(Variable);
|
|
})
|
|
|
|
|
|
Routes.put('/variable', async function (Request, Response)
|
|
{
|
|
let Variable = await VariableTable.findByPk(Request.body.variableId)
|
|
|
|
Variable.update({
|
|
name: Request.body.name,
|
|
label: Request.body.label,
|
|
regex: Request.body.regex,
|
|
example: Request.body.example,
|
|
default: Request.body.default
|
|
});
|
|
|
|
Response.status(200);
|
|
Response.send(Variable);
|
|
})
|
|
|
|
|
|
Routes.delete('/variable', async function (Request, Response)
|
|
{
|
|
let Variable = await VariableTable.findByPk(Request.body.variableId)
|
|
await Variable.destroy();
|
|
|
|
Response.status(200);
|
|
Response.send({});
|
|
})
|
|
|
|
|
|
Routes.post('/element', async function (Request, Response)
|
|
{
|
|
let template = await TemplateTable.findByPk(Request.body.templateId)
|
|
|
|
let element = await template.createElement({
|
|
name: Request.body.name,
|
|
type: Request.body.type,
|
|
config: Request.body.config,
|
|
comment: ""
|
|
});
|
|
|
|
Response.status(200);
|
|
Response.send(element);
|
|
})
|
|
|
|
|
|
Routes.put('/element', async function (Request, Response) {
|
|
let element = await ElementTable.findByPk(Request.body.elementId)
|
|
|
|
element.update({
|
|
name: Request.body.name,
|
|
type: Request.body.type,
|
|
config: Request.body.config,
|
|
comment: Request.body.comment
|
|
});
|
|
|
|
Response.status(200);
|
|
Response.send(element);
|
|
})
|
|
|
|
|
|
Routes.delete('/element', async function (Request, Response)
|
|
{
|
|
let element = await ElementTable.findByPk(Request.body.elementId)
|
|
await element.destroy();
|
|
|
|
Response.status(200);
|
|
Response.send({});
|
|
})
|