mirror of
https://github.com/Hessenuk/DiscordTickets.git
synced 2024-09-29 06:25:58 +03:00
5f5ffca74c
Middleware runs twice on question upsert?
39 lines
1.2 KiB
JavaScript
39 lines
1.2 KiB
JavaScript
const jsonFields = [
|
|
'pingRoles',
|
|
'requiredRoles',
|
|
'staffRoles',
|
|
'autoTag',
|
|
'blocklist',
|
|
'workingHours',
|
|
'options',
|
|
'pinnedMessages',
|
|
];
|
|
|
|
const traverse = (obj, action) => {
|
|
for (let prop in obj) {
|
|
if (prop === 'createMany') {
|
|
obj.create = obj[prop].data;
|
|
delete obj[prop];
|
|
prop = 'create';
|
|
traverse(obj[prop], action);
|
|
} else if (jsonFields.includes(prop) && obj[prop] !== null && obj[prop] !== undefined) {
|
|
if (action === 'SERIALISE' && typeof obj[prop] !== 'string') {
|
|
obj[prop] = JSON.stringify(obj[prop]);
|
|
} else if (action === 'PARSE' && typeof obj[prop] === 'string') {
|
|
obj[prop] = JSON.parse(obj[prop]);
|
|
}
|
|
} else if (typeof obj[prop] === 'object' && obj[prop] !== null && obj[prop] !== undefined) {
|
|
traverse(obj[prop], action);
|
|
}
|
|
}
|
|
return obj;
|
|
};
|
|
|
|
module.exports = async (params, next) => {
|
|
if (params.args.create) params.args.create = traverse(params.args.create, 'SERIALISE');
|
|
if (params.args.data) params.args.data = traverse(params.args.data, 'SERIALISE');
|
|
if (params.args.update) params.args.update = traverse(params.args.update, 'SERIALISE');
|
|
let result = await next(params);
|
|
if (result) result = traverse(result, 'PARSE');
|
|
return result;
|
|
}; |