2024-04-07 15:21:42 +03:00
|
|
|
import { Router } from "express";
|
|
|
|
|
|
|
|
import becca = require('../becca/becca');
|
|
|
|
import eu = require('./etapi_utils');
|
|
|
|
import mappers = require('./mappers');
|
|
|
|
import BBranch = require('../becca/entities/bbranch');
|
|
|
|
import entityChangesService = require('../services/entity_changes');
|
|
|
|
import v = require('./validators');
|
|
|
|
import { BranchRow } from "../becca/entities/rows";
|
|
|
|
|
|
|
|
function register(router: Router) {
|
2022-01-10 17:09:20 +01:00
|
|
|
eu.route(router, 'get', '/etapi/branches/:branchId', (req, res, next) => {
|
|
|
|
const branch = eu.getAndCheckBranch(req.params.branchId);
|
2022-01-07 19:33:59 +01:00
|
|
|
|
|
|
|
res.json(mappers.mapBranchToPojo(branch));
|
|
|
|
});
|
|
|
|
|
2022-01-12 19:32:23 +01:00
|
|
|
const ALLOWED_PROPERTIES_FOR_CREATE_BRANCH = {
|
|
|
|
'noteId': [v.mandatory, v.notNull, v.isNoteId],
|
|
|
|
'parentNoteId': [v.mandatory, v.notNull, v.isNoteId],
|
|
|
|
'notePosition': [v.notNull, v.isInteger],
|
|
|
|
'prefix': [v.isString],
|
|
|
|
'isExpanded': [v.notNull, v.isBoolean]
|
|
|
|
};
|
2022-01-12 21:14:12 +01:00
|
|
|
|
2024-04-07 14:56:22 +03:00
|
|
|
eu.route(router, 'post', '/etapi/branches', (req, res, next) => {
|
2024-04-07 15:21:42 +03:00
|
|
|
const _params = {};
|
|
|
|
eu.validateAndPatch(_params, req.body, ALLOWED_PROPERTIES_FOR_CREATE_BRANCH);
|
|
|
|
const params: BranchRow = _params as BranchRow;
|
2022-01-07 19:33:59 +01:00
|
|
|
|
|
|
|
const existing = becca.getBranchFromChildAndParent(params.noteId, params.parentNoteId);
|
|
|
|
|
|
|
|
if (existing) {
|
2024-04-07 15:21:42 +03:00
|
|
|
existing.notePosition = params.notePosition as number;
|
|
|
|
existing.prefix = params.prefix as string;
|
|
|
|
existing.isExpanded = params.isExpanded as boolean;
|
2022-01-07 19:33:59 +01:00
|
|
|
existing.save();
|
|
|
|
|
2022-01-12 21:14:12 +01:00
|
|
|
return res.status(200).json(mappers.mapBranchToPojo(existing));
|
2022-12-27 14:44:28 +01:00
|
|
|
} else {
|
|
|
|
try {
|
2023-01-03 13:52:37 +01:00
|
|
|
const branch = new BBranch(params).save();
|
2022-12-27 14:44:28 +01:00
|
|
|
|
|
|
|
res.status(201).json(mappers.mapBranchToPojo(branch));
|
2024-04-07 15:21:42 +03:00
|
|
|
} catch (e: any) {
|
2022-12-27 14:44:28 +01:00
|
|
|
throw new eu.EtapiError(400, eu.GENERIC_CODE, e.message);
|
|
|
|
}
|
2022-01-07 19:33:59 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
const ALLOWED_PROPERTIES_FOR_PATCH = {
|
2022-01-12 19:32:23 +01:00
|
|
|
'notePosition': [v.notNull, v.isInteger],
|
|
|
|
'prefix': [v.isString],
|
|
|
|
'isExpanded': [v.notNull, v.isBoolean]
|
2022-01-07 19:33:59 +01:00
|
|
|
};
|
|
|
|
|
2024-04-07 14:56:22 +03:00
|
|
|
eu.route(router, 'patch', '/etapi/branches/:branchId', (req, res, next) => {
|
2022-01-10 17:09:20 +01:00
|
|
|
const branch = eu.getAndCheckBranch(req.params.branchId);
|
2022-01-07 19:33:59 +01:00
|
|
|
|
2022-01-10 17:09:20 +01:00
|
|
|
eu.validateAndPatch(branch, req.body, ALLOWED_PROPERTIES_FOR_PATCH);
|
2022-01-12 19:32:23 +01:00
|
|
|
branch.save();
|
2022-01-07 19:33:59 +01:00
|
|
|
|
|
|
|
res.json(mappers.mapBranchToPojo(branch));
|
|
|
|
});
|
|
|
|
|
2024-04-07 14:56:22 +03:00
|
|
|
eu.route(router, 'delete', '/etapi/branches/:branchId', (req, res, next) => {
|
2022-01-07 19:33:59 +01:00
|
|
|
const branch = becca.getBranch(req.params.branchId);
|
|
|
|
|
2023-06-05 09:23:42 +02:00
|
|
|
if (!branch) {
|
2022-01-07 19:33:59 +01:00
|
|
|
return res.sendStatus(204);
|
|
|
|
}
|
|
|
|
|
2022-04-19 23:06:46 +02:00
|
|
|
branch.deleteBranch();
|
2022-01-07 19:33:59 +01:00
|
|
|
|
|
|
|
res.sendStatus(204);
|
|
|
|
});
|
|
|
|
|
2024-04-07 14:56:22 +03:00
|
|
|
eu.route(router, 'post', '/etapi/refresh-note-ordering/:parentNoteId', (req, res, next) => {
|
2022-01-10 17:09:20 +01:00
|
|
|
eu.getAndCheckNote(req.params.parentNoteId);
|
2022-01-07 19:33:59 +01:00
|
|
|
|
2023-07-29 23:25:02 +02:00
|
|
|
entityChangesService.putNoteReorderingEntityChange(req.params.parentNoteId, "etapi");
|
2022-01-07 23:06:04 +01:00
|
|
|
|
|
|
|
res.sendStatus(204);
|
2022-01-07 19:33:59 +01:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2024-04-07 15:21:42 +03:00
|
|
|
export = {
|
2022-01-07 19:33:59 +01:00
|
|
|
register
|
2022-01-07 23:06:04 +01:00
|
|
|
};
|