From 588fc747ee987d7fea732cfb63bc839c89e10944 Mon Sep 17 00:00:00 2001 From: Maria Mattlin Date: Wed, 29 Jun 2022 10:40:43 -0700 Subject: [PATCH 1/6] PROD-2308 #comment Omitting name as a field that gets updated back from Informix to DynamoDB #time 1h --- src/services/challengeService.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/services/challengeService.js b/src/services/challengeService.js index af30ad4..b1f7138 100644 --- a/src/services/challengeService.js +++ b/src/services/challengeService.js @@ -78,7 +78,7 @@ async function createChallenge (challenge) { */ async function updateChallenge (challenge) { try { - const updateChallenge = new Challenge(_.omit(challenge, ['created', 'createdBy'])) + const updateChallenge = new Challenge(_.omit(challenge, ['created', 'createdBy', 'name'])) // numOfSubmissions and numOfRegistrants are not stored in dynamo, they're calclated by the ES processor await Challenge.update({ id: challenge.id }, _.omit(updateChallenge, challengePropertiesToOmitFromDynamo)) await getESClient().update({ @@ -88,7 +88,7 @@ async function updateChallenge (challenge) { id: challenge.id, body: { doc: { - ..._.omit(challenge, ['created', 'createdBy']), + ..._.omit(challenge, ['created', 'createdBy', 'name']), groups: _.filter(challenge.groups, g => _.toString(g).toLowerCase() !== 'null') } } @@ -551,8 +551,8 @@ async function buildV5Challenge (legacyId, challengeListing, challengeDetails) { detailRequirement = challengeDetails.introduction + '
' + detailRequirement } if (_.get(challengeDetails, 'finalSubmissionGuidelines', '').trim() !== 'null' && - _.get(challengeDetails, 'finalSubmissionGuidelines', '').trim() !== '' && - _.get(challengeDetails, 'finalSubmissionGuidelines', '').trim() !== 'Please read above') { + _.get(challengeDetails, 'finalSubmissionGuidelines', '').trim() !== '' && + _.get(challengeDetails, 'finalSubmissionGuidelines', '').trim() !== 'Please read above') { detailRequirement += '

Final Submission Guidelines

' + challengeDetails.finalSubmissionGuidelines } } else { From d4da9e772fda85147bd75496c10f2a35544c4db7 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Wed, 6 Jul 2022 03:27:28 +0600 Subject: [PATCH 2/6] feat: mark challenge as track: DS, subTrack: MM if challenge was tagged Data Science Match --- src/util/conversionMappings.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/util/conversionMappings.js b/src/util/conversionMappings.js index 7298c81..661bb02 100644 --- a/src/util/conversionMappings.js +++ b/src/util/conversionMappings.js @@ -86,6 +86,7 @@ const V4_SUBTRACKS = { } const MARATHON_MATCH_TAG = 'Marathon Match' +const DATA_SCIENCE_MATCH_TAG = "Data Science Match" const DATA_SCIENCE_TAG = 'Data Science' const FE_DESIGN_TAG = 'Front-End Design' @@ -115,7 +116,7 @@ module.exports = { V5_TO_V4: { [V5_TRACK_IDS.DATA_SCIENCE]: { [V5_TYPE_IDS.CHALLENGE]: (tags) => { - if (_.includes(tags, MARATHON_MATCH_TAG)) { + if (_.includes(tags, MARATHON_MATCH_TAG) || _.includes(tags, DATA_SCIENCE_MATCH_TAG)) { return buildV4Data(V4_TRACKS.DATA_SCIENCE, V4_SUBTRACKS.MARATHON_MATCH, false) } else { return buildV4Data(V4_TRACKS.DEVELOP, V4_SUBTRACKS.CODE, false, [DATA_SCIENCE_TAG]) From 775ab4b6c87ad8a40115d5b6259eb5e8fc713a06 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Mon, 11 Jul 2022 11:45:01 +0600 Subject: [PATCH 3/6] fix: incorrect tag "Marathon Match" in v4->v5 sync * when v4 challenge subtrack is DEVELOP_MARATHON_MATCH consider it a competitive programming: Marathon Match, but * when v4 challenge subtrack is MARATHON_MATCH consider it a Data Science Marathon Match --- src/util/conversionMappings.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/util/conversionMappings.js b/src/util/conversionMappings.js index 661bb02..cf2fd4b 100644 --- a/src/util/conversionMappings.js +++ b/src/util/conversionMappings.js @@ -143,7 +143,8 @@ module.exports = { }, V4_TO_V5: { [V4_TRACKS.DATA_SCIENCE]: { - [V4_SUBTRACKS.MARATHON_MATCH]: () => buildV5Data(V5_TRACK_IDS.DATA_SCIENCE, V5_TYPE_IDS.CHALLENGE, [MARATHON_MATCH_TAG]) + // categorizes non competitive programming marathon matches as Data Science Match + [V4_SUBTRACKS.MARATHON_MATCH]: () => buildV5Data(V5_TRACK_IDS.DATA_SCIENCE, V5_TYPE_IDS.CHALLENGE, [DATA_SCIENCE_MATCH_TAG]) }, [V4_TRACKS.DESIGN]: { [V4_SUBTRACKS.DESIGN_FIRST_2_FINISH]: (isTask) => buildV5Data(V5_TRACK_IDS.DESIGN, isTask ? V5_TYPE_IDS.TASK : V5_TYPE_IDS.FIRST_2_FINISH), From 878a7e4130aad9d8b145f682bceb25a7a39f1f64 Mon Sep 17 00:00:00 2001 From: Thomas Kranitsas Date: Tue, 26 Jul 2022 13:24:10 +0300 Subject: [PATCH 4/6] temporarily disable auto sync --- config/default.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/default.js b/config/default.js index bfb6a2a..e60887d 100644 --- a/config/default.js +++ b/config/default.js @@ -6,7 +6,7 @@ module.exports = { SYNC_QUEUE_INTERVAL: process.env.SYNC_QUEUE_INTERVAL ? Number(process.env.SYNC_QUEUE_INTERVAL) : 1, // minutes MIGRATION_ENABLED: process.env.MIGRATION_ENABLED ? process.env.MIGRATION_ENABLED === 'true' : false, - AUTO_SYNC_ENABLED: process.env.AUTO_SYNC_ENABLED ? process.env.AUTO_SYNC_ENABLED === 'true' : false, + AUTO_SYNC_ENABLED: false, // process.env.AUTO_SYNC_ENABLED ? process.env.AUTO_SYNC_ENABLED === 'true' : false, SYNC_ENABLED: process.env.SYNC_ENABLED ? process.env.SYNC_ENABLED === 'true' : false, AUTH_SECRET: process.env.AUTH_SECRET || 'mysecret', From 3dc0eaa8356716c16ede7846add5f0a256c8570d Mon Sep 17 00:00:00 2001 From: Thomas Kranitsas Date: Fri, 29 Jul 2022 13:46:00 +0300 Subject: [PATCH 5/6] enable sync --- config/default.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/default.js b/config/default.js index e60887d..bfb6a2a 100644 --- a/config/default.js +++ b/config/default.js @@ -6,7 +6,7 @@ module.exports = { SYNC_QUEUE_INTERVAL: process.env.SYNC_QUEUE_INTERVAL ? Number(process.env.SYNC_QUEUE_INTERVAL) : 1, // minutes MIGRATION_ENABLED: process.env.MIGRATION_ENABLED ? process.env.MIGRATION_ENABLED === 'true' : false, - AUTO_SYNC_ENABLED: false, // process.env.AUTO_SYNC_ENABLED ? process.env.AUTO_SYNC_ENABLED === 'true' : false, + AUTO_SYNC_ENABLED: process.env.AUTO_SYNC_ENABLED ? process.env.AUTO_SYNC_ENABLED === 'true' : false, SYNC_ENABLED: process.env.SYNC_ENABLED ? process.env.SYNC_ENABLED === 'true' : false, AUTH_SECRET: process.env.AUTH_SECRET || 'mysecret', From 6d36da31cd39a597291560b5c8b94c3ea584b993 Mon Sep 17 00:00:00 2001 From: Marios Kranitsas Date: Mon, 29 Aug 2022 15:45:41 +0300 Subject: [PATCH 6/6] ignore challenge.task info for completed challenges on legacy --- src/constants.js | 7 ++++++- src/services/challengeService.js | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/constants.js b/src/constants.js index 0418ee6..9d64758 100644 --- a/src/constants.js +++ b/src/constants.js @@ -17,7 +17,12 @@ const challengeStatusOrders = { cancelled: 2 } +const challengeStatuses = { + Completed: 'Completed', +} + module.exports = { prizeSetTypes, - challengeStatusOrders + challengeStatusOrders, + challengeStatuses } diff --git a/src/services/challengeService.js b/src/services/challengeService.js index b1f7138..6a0257c 100644 --- a/src/services/challengeService.js +++ b/src/services/challengeService.js @@ -78,6 +78,9 @@ async function createChallenge (challenge) { */ async function updateChallenge (challenge) { try { + if (challenge.task && (challenge.status === constants.challengeStatuses.Completed || _.get(challenge, 'winners.length') > 0)) { + _.unset(challenge, 'task') + } const updateChallenge = new Challenge(_.omit(challenge, ['created', 'createdBy', 'name'])) // numOfSubmissions and numOfRegistrants are not stored in dynamo, they're calclated by the ES processor await Challenge.update({ id: challenge.id }, _.omit(updateChallenge, challengePropertiesToOmitFromDynamo))