From 8d36ebeb3c618e231d99d4c4ddb2d8c9628fb0c8 Mon Sep 17 00:00:00 2001 From: Naz Date: Thu, 2 Sep 2021 15:42:27 +0400 Subject: [PATCH] Refactored Labels API add method back to promises refs https://github.com/TryGhost/Team/issues/694 - Additional try/catch block needed in async/await implementation increased method complexity and broke the complexity linting rule. This is a dirty way to fix the warning. Ideally the implementation should stay with async/await syntax and instead move the custom error handling logic into some different layer. For example we could introduce a separate "stage" in the API framework's "pipeline" where we'd catch and handle in a generic way all of the "unique" types of errors. It would make sense to have a generic handler because this same code happens in labels, member and few more places. --- core/server/api/canary/labels.js | 17 ++++++++--------- core/server/api/v3/labels.js | 17 ++++++++--------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/core/server/api/canary/labels.js b/core/server/api/canary/labels.js index 5d17bac1bd..36b29a8370 100644 --- a/core/server/api/canary/labels.js +++ b/core/server/api/canary/labels.js @@ -76,16 +76,15 @@ module.exports = { } }, permissions: true, - async query(frame) { - try { - return await models.Label.add(frame.data.labels[0], frame.options); - } catch (error) { - if (error.code && error.message.toLowerCase().indexOf('unique') !== -1) { - throw new errors.ValidationError({message: i18n.t('errors.api.labels.labelAlreadyExists')}); - } + query(frame) { + return models.Label.add(frame.data.labels[0], frame.options) + .catch((error) => { + if (error.code && error.message.toLowerCase().indexOf('unique') !== -1) { + throw new errors.ValidationError({message: i18n.t('errors.api.labels.labelAlreadyExists')}); + } - throw error; - } + throw error; + }); } }, diff --git a/core/server/api/v3/labels.js b/core/server/api/v3/labels.js index 5d17bac1bd..36b29a8370 100644 --- a/core/server/api/v3/labels.js +++ b/core/server/api/v3/labels.js @@ -76,16 +76,15 @@ module.exports = { } }, permissions: true, - async query(frame) { - try { - return await models.Label.add(frame.data.labels[0], frame.options); - } catch (error) { - if (error.code && error.message.toLowerCase().indexOf('unique') !== -1) { - throw new errors.ValidationError({message: i18n.t('errors.api.labels.labelAlreadyExists')}); - } + query(frame) { + return models.Label.add(frame.data.labels[0], frame.options) + .catch((error) => { + if (error.code && error.message.toLowerCase().indexOf('unique') !== -1) { + throw new errors.ValidationError({message: i18n.t('errors.api.labels.labelAlreadyExists')}); + } - throw error; - } + throw error; + }); } },