68 lines
1.7 KiB
JavaScript
68 lines
1.7 KiB
JavaScript
const ApiError = require("../errorClass");
|
|
const database = require("../../../database");
|
|
const apiTypes = require("../typeChecker");
|
|
|
|
const router = require('express').Router();
|
|
|
|
async function checkSyntaxArgs(req, res) {
|
|
if (req.body === undefined || !req.headers['content-type'].includes('json')) {
|
|
throw new ApiError("METHOD_MUST_BE_POST_JSON", { method : 'remove-item', no_post : false });
|
|
}
|
|
const checker = new apiTypes.TypeChecker();
|
|
|
|
await checker.checkRequired(req.body.type, apiTypes.ItemType, 'type');
|
|
|
|
if (req.body.type === 'music') {
|
|
await checker.checkRequired(req.body.id, apiTypes.MusicType, 'id');
|
|
}
|
|
else if (req.body.type === 'author') {
|
|
await checker.checkRequired(req.body.id, apiTypes.AuthorType, 'id');
|
|
}
|
|
|
|
const result = await checker.calculate();
|
|
if (!result.success) {
|
|
throw new ApiError("UNSYNTAX_PARAMS_OR_MISSED_REQUIRED_PARAMS", result);
|
|
}
|
|
}
|
|
|
|
router.post('/remove-item', async (req, res, next) => {
|
|
try {
|
|
await checkSyntaxArgs(req, res);
|
|
|
|
if (req.body.type === "author") {
|
|
// Удаляем всю музыку этого исполнителя
|
|
await database.music.destroy({
|
|
where: {
|
|
author_id: req.body.id,
|
|
},
|
|
});
|
|
// Удаляем исполнителя
|
|
await database.authors.destroy({
|
|
where: {
|
|
id: req.body.id,
|
|
},
|
|
});
|
|
} else {
|
|
await database.music.destroy({
|
|
where: {
|
|
id: req.body.id,
|
|
},
|
|
});
|
|
}
|
|
res.result("ok");
|
|
}
|
|
catch (err) {
|
|
return next(err);
|
|
}
|
|
});
|
|
|
|
router.use('/remove-item', async (req, res, next) => {
|
|
try {
|
|
return next(new ApiError("METHOD_MUST_BE_POST_JSON", { method : 'remove-item', no_post : true }));
|
|
}
|
|
catch (err) {
|
|
return next(err);
|
|
}
|
|
});
|
|
|
|
module.exports = router; |