diff --git a/src/common/helper.js b/src/common/helper.js index 275728f..1c50c6f 100644 --- a/src/common/helper.js +++ b/src/common/helper.js @@ -165,10 +165,34 @@ async function getMemberDetailsByUserIds (userIds) { } } +/** + * Populate member with user details + * + * @param {Object} member the member object + * @returns {Object} the member object with details + */ +async function populateMemberWithUserDetails (member) { + try { + const membersDetails = await getMemberDetailsByUserIds([member.userId]) + const memberDetails = membersDetails[0] + if (memberDetails) { + logger.debug(`Successfully got user details for member (userId:${member.userId})`) + return _.merge(member, _.pick(memberDetails, 'handle', 'firstName', 'lastName', 'email')) + } else { + throw new Error(`Didn't fine user details for member (userId:${member.userId})`) + } + } catch (err) { + logger.error(`Cannot populate member (userId:${member.userId}) with user details.`) + logger.debug(`Error during populating member (userId:${member.userId}) with user details`, err) + return member + } +} + module.exports = { getESClient, updateProjectESPromise, updateTimelineESPromise, updateMetadadaESPromise, - getMemberDetailsByUserIds + getMemberDetailsByUserIds, + populateMemberWithUserDetails } diff --git a/src/services/ProcessorServiceProject.js b/src/services/ProcessorServiceProject.js index becf604..5beba35 100644 --- a/src/services/ProcessorServiceProject.js +++ b/src/services/ProcessorServiceProject.js @@ -93,6 +93,9 @@ function createSchema () { * @return {Promise} promise result */ async function create (message) { + const member = await helper.populateMemberWithUserDetails(message.members[0]) + message.members = [member] + await client.create({ index: config.get('esConfig.ES_PROJECT_INDEX'), type: config.get('esConfig.ES_TYPE'), diff --git a/src/services/ProcessorServiceProjectMember.js b/src/services/ProcessorServiceProjectMember.js index e24c13a..dedb141 100644 --- a/src/services/ProcessorServiceProjectMember.js +++ b/src/services/ProcessorServiceProjectMember.js @@ -53,23 +53,7 @@ async function create (message) { async function updateDocPromise (doc) { const members = _.isArray(doc._source.members) ? doc._source.members : [] const existingMemberIndex = _.findIndex(members, p => p.id === message.id)// if member does not exists already - let member = message - - // try to populate member with user details - // the code should move on, as it's not critical and is only used for searching at the moment - try { - const membersDetails = await helper.getMemberDetailsByUserIds([message.userId]) - const memberDetails = membersDetails[0] - if (memberDetails) { - member = _.merge(message, _.pick(memberDetails, 'handle', 'firstName', 'lastName', 'email')) - logger.debug(`Successfully got user details for member (userId:${message.userId})`) - } else { - throw new Error(`Didn't fine user details for member (userId:${message.userId})`) - } - } catch (err) { - logger.error(`Cannot populate member (userId:${message.userId}) with user details.`) - logger.debug(`Error during populating member (userId:${message.userId}) with user details`, err) - } + const member = await helper.populateMemberWithUserDetails(message) if (existingMemberIndex === -1) { members.push(member)