const ApiError = require('../errorClass'); async function isAuthorExists (id) { if (!id || !Number.isInteger(id)) return false; return (await global.database.authors.promiseMode().get({ where : { id } })).length !== 0; } async function isMuzicExists (id) { if (!id || !Number.isInteger(id)) return false; let result = (await global.database.muzic.promiseMode().get({ where : { id } })).length !== 0; console.log('isMuzicExists', result); return result; } async function checkSyntaxArgs (req, res) { return !!( ( // Проверка поля type ['author', 'muzic'].includes(req.json.type) ) && ( // Проверка поля name req.json.name === undefined ? true : (typeof req.json.name === 'string' && req.json.name.length >= 2) ) && ( // Проверка id req.json.type === 'author' ? await isAuthorExists(req.json.id) : await isMuzicExists(req.json.id) ) && ( // Проверка при type=muzic req.json.type === 'muzic' ? ( ( // Проверка поля author_id req.json.author_id === undefined ? true : await isAuthorExists(req.json.author_id) ) && ( // Проверка поля data. (Передаётся либо ничего, либо строка с base64) req.json.data === undefined ? true : ( typeof req.json.data === 'string' ) ) ) : true ) ) } module.exports = async (req, res) => { if (req.method !== 'POST') { throw new ApiError("METHOD_MUST_BE_POST_JSON", { request_method : req.method }); } console.log(await checkSyntaxArgs(req, res)); if (!await checkSyntaxArgs(req, res)) { throw new ApiError("INVALID_OR_UNSYNTAX_PARAMS", { request_method : req.method, params : { id : req.json.id === undefined ? null : req.json.id, type : req.json.type === undefined ? null : req.json.type, name : req.json.name === undefined ? null : req.json.name, ...(req.json.type === 'muzic' ? { author_id : req.json.author_id, data : req.json.data } : {}) } }); } if (req.json.type === 'author') { await global.database.authors.promiseMode().edit({ name : req.json.name }, { where : { id : req.json.id } }); } else { await global.database.muzic.promiseMode().edit({ name : req.json.name, author_id : req.json.author_id, data : !req.json.data ? undefined : Buffer.from(req.json.data, "base64") }, { where : { id : req.json.id } }); } return 'ok'; }