From 4e5dde7fe73a9b68064e992e3268f1fd7cdc934f Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Wed, 30 Aug 2023 14:04:57 +0600 Subject: [PATCH] fix: use challenge scheduler only for f2fs Signed-off-by: Rakib Ansary --- src/domain/Challenge.ts | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/src/domain/Challenge.ts b/src/domain/Challenge.ts index 1fec156..53a22d4 100644 --- a/src/domain/Challenge.ts +++ b/src/domain/Challenge.ts @@ -196,7 +196,7 @@ class ChallengeDomain extends CoreOperations { const newChallenge = await super.create(challenge, metadata); - if (input.phases && input.phases.length) { + if (input.phases && input.phases.length && this.shouldUseScheduler(newChallenge)) { await ChallengeScheduler.schedule(newChallenge.id, input.phases); } @@ -329,7 +329,11 @@ class ChallengeDomain extends CoreOperations { metadata ); - if (input.phaseUpdate?.phases && input.phaseUpdate.phases.length) { + if ( + input.phaseUpdate?.phases && + input.phaseUpdate.phases.length && + this.shouldUseScheduler(challenge) + ) { await ChallengeScheduler.schedule(challenge.id, input.phaseUpdate.phases); } @@ -341,8 +345,15 @@ class ChallengeDomain extends CoreOperations { input: UpdateChallengeInputForACL_UpdateInputForACL ): Promise { const updatedBy = "tcwebservice"; // TODO: Extract from interceptors - let challenge: Challenge | undefined = undefined; const id = scanCriteria[0].value; + + const challenge: Challenge | undefined = + !_.isUndefined(input.legacy) || + !_.isUndefined(input.phaseToClose) || + (input.phases?.phases && input.phases.phases.length) + ? await this.lookup(DomainHelper.getLookupCriteria("id", id)) + : undefined; + const data: IUpdateDataFromACL = {}; let raiseEvent = false; @@ -369,15 +380,7 @@ class ChallengeDomain extends CoreOperations { } if (!_.isUndefined(input.legacy)) { - if (_.isUndefined(challenge)) { - try { - challenge = await this.lookup(DomainHelper.getLookupCriteria("id", id)); - } catch (err) { - console.error(err); - throw err; - } - } - data.legacy = _.assign({}, challenge.legacy, input.legacy); + data.legacy = _.assign({}, challenge?.legacy, input.legacy); } if (!_.isUndefined(input.prizeSets)) { @@ -418,11 +421,11 @@ class ChallengeDomain extends CoreOperations { await super.update(scanCriteria, dynamoUpdate); - if (input.phases?.phases && input.phases.phases.length) { + if (input.phases?.phases && input.phases.phases.length && this.shouldUseScheduler(challenge!)) { await ChallengeScheduler.schedule(id, input.phases.phases); } - if (!_.isUndefined(input.phaseToClose)) { + if (!_.isUndefined(input.phaseToClose) && this.shouldUseScheduler(challenge!)) { await ChallengeScheduler.schedulePhaseOperation(id, input.phaseToClose, "close"); } @@ -481,6 +484,11 @@ class ChallengeDomain extends CoreOperations { delete overview.totalPrizesInCents; } } + + private shouldUseScheduler(challenge: Challenge) { + // Use scheduler only for legacy code F2Fs + return challenge?.legacy?.subTrack === "FIRST_2_FINISH" && !challenge?.legacy.pureV5Task; + } } interface IUpdateDataFromACL {