Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

Fetch Issue with query. #35

Merged
merged 1 commit into from
Nov 26, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions services/IssueService.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ async function ensureChallengeExists(event, issue, create = true) {
logger.debug(`Enter ensureChallengeExists. provider: ${issue.provider}`);
logger.debug(`Enter ensureChallengeExists. repositoryId: ${issue.repositoryId}`);

let dbIssue = await dbHelper.scanOne(models.Issue, {
let dbIssue = await dbHelper.queryOne(models.Issue, {
number: issue.number,
provider: issue.provider,
repositoryId: issue.repositoryId
Expand All @@ -86,15 +86,15 @@ async function ensureChallengeExists(event, issue, create = true) {
number: issue.number,
provider: issue.provider,
repositoryId: issue.repositoryId
});
}, true);
dbIssue = null;
}

if (!dbIssue && create) {
logger.debug('dbIssue is NULL, process to create new record and challenge');

await handleIssueCreate(event, issue);
dbIssue = await dbHelper.scanOne(models.Issue, {
dbIssue = await dbHelper.queryOne(models.Issue, {
number: issue.number,
provider: issue.provider,
repositoryId: issue.repositoryId
Expand Down Expand Up @@ -551,7 +551,7 @@ async function handleIssueCreate(event, issue, recreate = false) {
}// if existing found don't create a project

// Check if duplicated
let dbIssue = await dbHelper.scanOne(models.Issue, {
let dbIssue = await dbHelper.queryOne(models.Issue, {
number: issue.number,
provider: issue.provider,
repositoryId: issue.repositoryId
Expand Down Expand Up @@ -603,7 +603,7 @@ async function handleIssueCreate(event, issue, recreate = false) {
number: issue.number,
provider: issue.provider,
repositoryId: issue.repositoryId
});
}, true);
await eventService.handleEventGracefully(event, issue, e);
return;
}
Expand Down Expand Up @@ -745,7 +745,7 @@ async function handleIssueUnAssignment(event, issue) {
* @private
*/
async function handleIssueRecreate(event, issue) {
const dbIssue = await dbHelper.scanOne(models.Issue, {
const dbIssue = await dbHelper.queryOne(models.Issue, {
number: issue.number,
provider: issue.provider,
repositoryId: issue.repositoryId
Expand Down
44 changes: 41 additions & 3 deletions utils/db-helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* Copyright (c) 2018 TopCoder, Inc. All rights reserved.
*/
'use strict';
const _ = require('lodash');
const logger = require('./logger');

/**
Expand Down Expand Up @@ -46,6 +47,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<void>}
*/
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
Expand Down Expand Up @@ -132,9 +163,15 @@ async function update(Model, id, data) {
* Delete item in database
* @param {Object} Model The dynamoose model to delete
* @param {Object} queryParams The query parameters object
* @param {Boolean} withQuery Find the object with query instead of scan
*/
async function remove(Model, queryParams) {
const dbItem = await scanOne(Model, queryParams);
async function remove(Model, queryParams, withQuery = false) {
let dbItem;
if (withQuery) {
dbItem = await queryOne(Model, queryParams);
} else {
dbItem = await scanOne(Model, queryParams);
}
await new Promise((resolve, reject) => {
if (dbItem != null) {
dbItem.delete((err) => {
Expand All @@ -155,5 +192,6 @@ module.exports = {
updateMany,
create,
update,
remove
remove,
queryOne
};