diff --git a/models/UserMapping.js b/models/GithubUserMapping.js similarity index 67% rename from models/UserMapping.js rename to models/GithubUserMapping.js index d6484f1..6cd5d23 100644 --- a/models/UserMapping.js +++ b/models/GithubUserMapping.js @@ -1,5 +1,5 @@ /** - * This defines user mapping model. + * This defines github user mapping model. */ 'use strict'; @@ -32,15 +32,6 @@ const schema = new Schema({ name: 'GithubUsernameIndex' } }, - gitlabUsername: { - type: String, - index: { - global: true, - project: true, - rangKey: 'id', - name: 'GitlabUsernameIndex' - } - }, githubUserId: { type: Number, index: { @@ -49,15 +40,6 @@ const schema = new Schema({ rangKey: 'id', name: 'GithubUserIdIndex' } - }, - gitlabUserId: { - type: Number, - index: { - global: true, - project: true, - rangKey: 'id', - name: 'GitlabUserIdIndex' - } } }); diff --git a/models/GitlabUserMapping.js b/models/GitlabUserMapping.js new file mode 100644 index 0000000..f87f1d9 --- /dev/null +++ b/models/GitlabUserMapping.js @@ -0,0 +1,46 @@ +/** + * This defines gitlab user mapping model. + */ +'use strict'; + +const dynamoose = require('dynamoose'); + +const Schema = dynamoose.Schema; + +const schema = new Schema({ + id: { + type: String, + required: true, + hashKey: true + }, + topcoderUsername: { + type: String, + required: true, + index: { + global: true, + project: true, + rangKey: 'id', + name: 'TopcoderUsernameIndex' + } + }, + gitlabUsername: { + type: String, + index: { + global: true, + project: true, + rangKey: 'id', + name: 'GitlabUsernameIndex' + } + }, + gitlabUserId: { + type: Number, + index: { + global: true, + project: true, + rangKey: 'id', + name: 'GitlabUserIdIndex' + } + } +}); + +module.exports = schema; diff --git a/models/index.js b/models/index.js index cf0c100..43390cd 100644 --- a/models/index.js +++ b/models/index.js @@ -38,8 +38,9 @@ const models = { Issue: dynamoose.model('Topcoder_X.Issue', require('./Issue')), Project: dynamoose.model('Topcoder_X.Project', require('./Project')), User: dynamoose.model('Topcoder_X.User', require('./User')), - UserMapping: dynamoose.model('Topcoder_X.UserMapping', require('./UserMapping')), - CopilotPayment: dynamoose.model('Topcoder_X.CopilotPayment', require('./CopilotPayment')) + CopilotPayment: dynamoose.model('Topcoder_X.CopilotPayment', require('./CopilotPayment')), + GithubUserMapping: dynamoose.model('Topcoder_X.GithubUserMapping', require('./GithubUserMapping')), + GitlabUserMapping: dynamoose.model('Topcoder_X.GitlabUserMapping', require('./GitlabUserMapping')) }; /* eslint-enable global-require */ diff --git a/services/UserService.js b/services/UserService.js index bed93a0..182a920 100755 --- a/services/UserService.js +++ b/services/UserService.js @@ -28,15 +28,15 @@ async function getTCUserName(provider, gitUser) { const criteria = {}; if (_.isNumber(gitUser) || v.isUUID(gitUser)) { if (provider === 'github') { - return await dbHelper.queryOneUserMappingByGithubUserId(models.UserMapping, gitUser); + return await dbHelper.queryOneUserMappingByGithubUserId(models.GithubUserMapping, gitUser); } else if (provider === 'gitlab') { - return await dbHelper.queryOneUserMappingByGitlabUserId(models.UserMapping, gitUser); + return await dbHelper.queryOneUserMappingByGitlabUserId(models.GitlabUserMapping, gitUser); } } else if (_.isString(gitUser) || v.isEmail(gitUser)) { if (provider === 'github') { - return await dbHelper.queryOneUserMappingByGithubUsername(models.UserMapping, gitUser); + return await dbHelper.queryOneUserMappingByGithubUsername(models.GithubUserMapping, gitUser); } else if (provider === 'gitlab') { - return await dbHelper.queryOneUserMappingByGitlabUsername(models.UserMapping, gitUser); + return await dbHelper.queryOneUserMappingByGitlabUsername(models.GitlabUserMapping, gitUser); } } if (_.isEmpty(criteria)) { @@ -73,7 +73,8 @@ async function getRepositoryCopilotOrOwner(provider, repoFullName) { } const userMapping = await dbHelper.queryOneUserMappingByTCUsername( - models.UserMapping, hasCopilot ? project.copilot.toLowerCase() : project.owner.toLowerCase()); + provider === 'github' ? models.GithubUserMapping : models.GitlabUserMapping, + hasCopilot ? project.copilot.toLowerCase() : project.owner.toLowerCase()); logger.debug('userMapping'); logger.debug(userMapping); diff --git a/utils/db-helper.js b/utils/db-helper.js index 13051a2..ea3bdd4 100644 --- a/utils/db-helper.js +++ b/utils/db-helper.js @@ -129,7 +129,7 @@ async function queryOneUserMappingByTCUsername(model, tcusername) { model.queryOne('topcoderUsername').eq(tcusername) .all() .exec((err, result) => { - if (err || !result) { + if (err) { logger.debug(`queryOneUserMappingByTCUsername. Error. ${err}`); return reject(err); }