From 1a222ba0c2f56a12ff02582c156c7f04a45cf7fe Mon Sep 17 00:00:00 2001 From: Afrisal Yodi Purnama Date: Tue, 26 Nov 2019 11:55:08 +0700 Subject: [PATCH] Fetch issue with queryone. --- src/common/db-helper.js | 32 ++++++++++++++++++++++++++++++++ src/services/IssueService.js | 33 +++++++++++++++++---------------- 2 files changed, 49 insertions(+), 16 deletions(-) diff --git a/src/common/db-helper.js b/src/common/db-helper.js index befadf5..2b1d374 100644 --- a/src/common/db-helper.js +++ b/src/common/db-helper.js @@ -1,3 +1,4 @@ +const _ = require('lodash'); const logger = require('./logger'); /* @@ -47,6 +48,36 @@ async function scan(model, scanParams) { }); } +/** + * Get single data by query parameters + * @param {Object} model The dynamoose model to query + * @param {Object} params The parameters object + * @returns {Promise} + */ +async function queryOne(model, params) { + logger.debug('Enter queryOne.'); + + return await new Promise((resolve, reject) => { + const queryParams = {}; + + _.forOwn(params, (value, key) => { + queryParams[key] = {eq: value}; + }); + + logger.debug(`${JSON.stringify(queryParams)}`); + model.queryOne(queryParams).exec((err, result) => { + if (err) { + logger.debug(`queryOne. Error. ${err}`); + return reject(err); + } + logger.debug('queryOne. Result.'); + logger.debug(result); + + return resolve(result); + }); + }); +} + /** * Get single data by scan parameters * @param {Object} model The dynamoose model to scan @@ -136,4 +167,5 @@ module.exports = { create, update, remove, + queryOne }; diff --git a/src/services/IssueService.js b/src/services/IssueService.js index be90acb..bba93ff 100644 --- a/src/services/IssueService.js +++ b/src/services/IssueService.js @@ -238,22 +238,6 @@ async function recreate(issue, currentUser) { }, }; - const dbIssue = await dbHelper.scanOne(models.Issue, { - number: issueNumber, - projectId: issue.projectId - }); - - if (!issue.recreate) { - if (dbIssue) dbIssue.delete(); - return { - success: true - }; - } - - if (!dbIssue) { - createEvent.event = 'issue.created'; - } - const labels = []; if (provider === 'github') { @@ -315,6 +299,23 @@ async function recreate(issue, currentUser) { } } + const dbIssue = await dbHelper.scanOne(models.Issue, { + number: issueNumber, + provider, + repositoryId: createEvent.data.repository.id + }); + + if (!issue.recreate) { + if (dbIssue) dbIssue.delete(); + return { + success: true + }; + } + + if (!dbIssue) { + createEvent.event = 'issue.created'; + } + if (labels.length > 0) { createEvent.data.issue.labels = labels; }