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

Commit cf094f1

Browse files
Replace created/udpated with user IDs
1 parent bba32e3 commit cf094f1

File tree

3 files changed

+42
-7
lines changed

3 files changed

+42
-7
lines changed

config/default.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ module.exports = {
6060
V5_PROJECTS_API_URL: process.env.V5_PROJECTS_API_URL || 'https://api.topcoder-dev.com/v5/projects',
6161
V5_CHALLENGE_MIGRATION_API_URL: process.env.V5_CHALLENGE_MIGRATION_API_URL || 'https://api.topcoder-dev.com/v5/challenge-migration',
6262
V4_ES_FEEDER_API_URL: process.env.V4_ES_FEEDER_API_URL || 'https://api.topcoder-dev.com/v4/esfeeder/challenges',
63+
MEMBER_API_URL: process.env.MEMBER_API_URL || 'https://api.topcoder-dev.com/v5/members',
6364

6465
V5_GROUPS_API_URL: process.env.V5_GROUPS_API_URL || 'https://api.topcoder-dev.com/v5/groups',
6566

src/common/helper.js

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,34 @@ async function forceV4ESFeeder (legacyId) {
162162
await request.put(`${config.V4_ES_FEEDER_API_URL}`).send(body).set({ Authorization: `Bearer ${token}` })
163163
}
164164

165+
/**
166+
* Get the member ID by handle
167+
* @param {String} handle the handle
168+
*/
169+
async function getMemberIdByHandle (handle) {
170+
const m2mToken = await getM2MToken()
171+
let memberId
172+
try {
173+
const res = await getRequest(`${config.MEMBER_API_URL}/${handle}`, m2mToken)
174+
if (_.get(res, 'body.userId')) {
175+
memberId = res.body.userId
176+
}
177+
// handle return from v3 API, handle and memberHandle are the same under case-insensitive condition
178+
handle = _.get(res, 'body.handle')
179+
} catch (error) {
180+
// re-throw all error except 404 Not-Founded, BadRequestError should be thrown if 404 occurs
181+
if (error.status !== 404) {
182+
throw error
183+
}
184+
}
185+
186+
if (_.isUndefined(memberId)) {
187+
throw new Error(`User with handle: ${handle} doesn't exist`)
188+
}
189+
190+
return memberId
191+
}
192+
165193
module.exports = {
166194
getInformixConnection,
167195
getKafkaOptions,
@@ -171,5 +199,6 @@ module.exports = {
171199
putRequest,
172200
postRequest,
173201
postBusEvent,
174-
forceV4ESFeeder
202+
forceV4ESFeeder,
203+
getMemberIdByHandle
175204
}

src/services/ProcessorService.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -559,6 +559,8 @@ async function processCreate (message) {
559559
logger.debug('Parsed Payload', saveDraftContestDTO)
560560
const challengeUuid = message.payload.id
561561

562+
const createdByUserId = await helper.getMemberIdByHandle(_.get(message, 'payload.createdBy'))
563+
562564
logger.debug('processCreate :: beforeTry')
563565
try {
564566
logger.info(`processCreate :: Skip Forums - ${config.V4_CHALLENGE_API_URL}?filter=skipForum=true body: ${JSON.stringify({ param: _.omit(saveDraftContestDTO, ['groupsToBeAdded', 'groupsToBeDeleted']) })}`)
@@ -586,7 +588,7 @@ async function processCreate (message) {
586588
}, m2mToken)
587589
// Repost all challenge resource on Kafka so they will get created on legacy by the legacy-challenge-resource-processor
588590
await rePostResourcesOnKafka(challengeUuid, m2mToken)
589-
await timelineService.enableTimelineNotifications(legacyId, _.get(message, 'payload.createdBy'))
591+
await timelineService.enableTimelineNotifications(legacyId, createdByUserId)
590592
logger.debug('End of processCreate')
591593
return legacyId
592594
} catch (e) {
@@ -651,14 +653,17 @@ async function processUpdate (message) {
651653
return
652654
}
653655

656+
const createdByUserId = await helper.getMemberIdByHandle(_.get(message, 'payload.createdBy'))
657+
const updatedByUserId = await helper.getMemberIdByHandle(_.get(message, 'payload.updatedBy') || _.get(message, 'payload.createdBy'))
658+
654659
let legacyId = message.payload.legacyId
655660
if (message.payload.status === constants.challengeStatuses.New) {
656661
logger.debug(`Will skip creating on legacy as status is ${constants.challengeStatuses.New}`)
657662
return
658663
} else if (!legacyId) {
659664
logger.debug('Legacy ID does not exist. Will create...')
660665
legacyId = await processCreate(message)
661-
await recreatePhases(legacyId, message.payload.phases, _.get(message, 'payload.updatedBy') || _.get(message, 'payload.createdBy'))
666+
await recreatePhases(legacyId, message.payload.phases, updatedByUserId)
662667
}
663668
const m2mToken = await helper.getM2MToken()
664669

@@ -706,7 +711,7 @@ async function processUpdate (message) {
706711
metaValue = constants.supportedMetadata[metadataKey].method(message.payload, constants.supportedMetadata[metadataKey].defaultValue)
707712
if (metaValue !== null && metaValue !== '') {
708713
logger.info(`Setting ${constants.supportedMetadata[metadataKey].description} to ${metaValue}`)
709-
await metadataService.createOrUpdateMetadata(legacyId, metadataKey, metaValue, _.get(message, 'payload.updatedBy') || _.get(message, 'payload.createdBy'))
714+
await metadataService.createOrUpdateMetadata(legacyId, metadataKey, metaValue, updatedByUserId)
710715
}
711716
} catch (e) {
712717
logger.warn(`Failed to set ${constants.supportedMetadata[metadataKey].description} to ${metaValue}`)
@@ -750,10 +755,10 @@ async function processUpdate (message) {
750755
} else {
751756
logger.info('Will skip syncing phases as the challenge is a task...')
752757
}
753-
await updateMemberPayments(legacyId, message.payload.prizeSets, _.get(message, 'payload.updatedBy') || _.get(message, 'payload.createdBy'))
758+
await updateMemberPayments(legacyId, message.payload.prizeSets, updatedByUserId)
754759
await associateChallengeGroups(saveDraftContestDTO.groupsToBeAdded, saveDraftContestDTO.groupsToBeDeleted, legacyId)
755-
await associateChallengeTerms(message.payload.terms, legacyId, _.get(message, 'payload.createdBy'), _.get(message, 'payload.updatedBy') || _.get(message, 'payload.createdBy'))
756-
await setCopilotPayment(message.payload.id, legacyId, _.get(message, 'payload.prizeSets'), _.get(message, 'payload.createdBy'), _.get(message, 'payload.updatedBy') || _.get(message, 'payload.createdBy'), m2mToken)
760+
await associateChallengeTerms(message.payload.terms, legacyId, createdByUserId, updatedByUserId)
761+
await setCopilotPayment(message.payload.id, legacyId, _.get(message, 'payload.prizeSets'), createdByUserId, updatedByUserId, m2mToken)
757762

758763
try {
759764
await helper.forceV4ESFeeder(legacyId)

0 commit comments

Comments
 (0)