diff --git a/services/ChallengeService.js b/services/ChallengeService.js index f11f47f..7ecaa9d 100644 --- a/services/ChallengeService.js +++ b/services/ChallengeService.js @@ -19,19 +19,21 @@ const dbHelper = require('../utils/db-helper'); * Update challenge tags * @param {Object} event the event */ -async handleChallengeTagsUpdate(event) { +async function handleChallengeTagsUpdate(event) { const tags = event.data.tags; - try { - _.each(event.data.challengeUUIDsList, challengeUUIDs => { + await Promise.all( + event.data.challengeUUIDsList.map(async (challengeUUIDs) => { if (_.isString(challengeUUIDs)) { // repoUrl challengeUUIDs = await dbHelper.queryChallengeUUIDsByRepoUrl(challengeUUIDs); } - _.each(challengeUUIDs, challengeUUID => await topcoderApiHelper.updateChallenge(challengeUUID, {tags})); - }); - } catch (err) { + return challengeUUIDs.map(async (challengeUUID) => await topcoderApiHelper.updateChallenge(challengeUUID, {tags})); + }).reduce((a, b) => _.concat(a, b), []) + ).then((resps) => { + logger.debug(`handleChallengeTagsUpdate updated ${_.size(resps)} challenges successfully.`); + }).catch((err) => { logger.error(`handleChallengeTagsUpdate failed. Internal Error: ${err}`); throw new Error(`handleChallengeTagsUpdate failed. Internal Error: ${err}`); - } + }); } /** @@ -52,9 +54,9 @@ process.schema = Joi.object().keys({ challengeUUIDsList: Joi.array().items( Joi.alternatives().try(Joi.string(), Joi.array().items(Joi.string())) ).required(), - tags: Joi.array().items(Joi.string().required()).min(1).required(), + tags: Joi.array().items(Joi.string().required()).min(1).required() }).required(), - retryCount: Joi.number().integer().default(0).optional(), + retryCount: Joi.number().integer().default(0).optional() }); diff --git a/services/GitlabService.js b/services/GitlabService.js index 559b31c..9e100f3 100644 --- a/services/GitlabService.js +++ b/services/GitlabService.js @@ -15,6 +15,7 @@ const Joi = require('joi'); const GitlabAPI = require('node-gitlab-api'); const logger = require('../utils/logger'); const errors = require('../utils/errors'); +const models = require('../models'); const helper = require('../utils/helper'); const dbHelper = require('../utils/db-helper'); const superagent = require('superagent'); @@ -338,15 +339,15 @@ async function _refreshGitlabUserAccessToken(copilot) { client_secret: config.GITLAB_CLIENT_SECRET, refresh_token: copilot.refreshToken, grant_type: 'refresh_token', - redirect_uri: config.GITLAB_OWNER_USER_CALLBACK_URL, + redirect_uri: config.GITLAB_OWNER_USER_CALLBACK_URL }) .end(); // save user token data const expiresIn = refreshTokenResult.body.expires_in || config.GITLAB_ACCESS_TOKEN_DEFAULT_EXPIRATION; - return await dbHelper.update(User, copilot.id, { + return await dbHelper.update(models.User, copilot.id, { accessToken: refreshTokenResult.body.access_token, accessTokenExpiration: new Date(new Date().getTime() + expiresIn * MS_PER_SECOND), - refreshToken: refreshTokenResult.body.refresh_token, + refreshToken: refreshTokenResult.body.refresh_token }); } return copilot; diff --git a/utils/db-helper.js b/utils/db-helper.js index 8775177..29cc2e4 100644 --- a/utils/db-helper.js +++ b/utils/db-helper.js @@ -83,8 +83,10 @@ async function queryOneIssue(model, repositoryId, number, provider) { async function queryOneActiveProject(model, repoUrl) { return await new Promise((resolve, reject) => { queryOneActiveRepository(models.Repository, repoUrl).then((repo) => { - if (!repo) resolve(null); - else model.queryOne('id').eq(repo.projectId).consistent() + if (!repo) { + resolve(null); + } else { + model.queryOne('id').eq(repo.projectId).consistent() .exec((err, result) => { if (err) { logger.debug(`queryOneActiveProject. Error. ${err}`); @@ -92,6 +94,7 @@ async function queryOneActiveProject(model, repoUrl) { } return resolve(result); }); + } }); }); } @@ -355,7 +358,7 @@ async function queryChallengeUUIDsByRepoUrl(repoUrl) { if (err) { return reject(err); } - return resolve(results.map({challengeUUID} => challengeUUID)); + return resolve(results.map(({challengeUUID}) => challengeUUID)); }); }); }