From 524c3c22dc15954ba15c65abe389b223dfd38cbb Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Mon, 24 Oct 2022 23:39:19 +0200 Subject: [PATCH] refactor(flickr): add isAlreadyProcessed for greatest dedupe strategy --- .../apps/flickr/triggers/new-photos/index.ts | 2 +- .../backend/src/helpers/global-variable.ts | 24 +++++++++++++------ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/packages/backend/src/apps/flickr/triggers/new-photos/index.ts b/packages/backend/src/apps/flickr/triggers/new-photos/index.ts index 7a7e6e94..371df5ff 100644 --- a/packages/backend/src/apps/flickr/triggers/new-photos/index.ts +++ b/packages/backend/src/apps/flickr/triggers/new-photos/index.ts @@ -6,7 +6,7 @@ export default defineTrigger({ pollInterval: 15, key: 'newPhoto', description: 'Triggers when you add a new photo.', - dedupeStrategy: 'unique', + dedupeStrategy: 'greatest', substeps: [ { key: 'chooseConnection', diff --git a/packages/backend/src/helpers/global-variable.ts b/packages/backend/src/helpers/global-variable.ts index 5ba1b1e3..69097354 100644 --- a/packages/backend/src/helpers/global-variable.ts +++ b/packages/backend/src/helpers/global-variable.ts @@ -87,16 +87,26 @@ const globalVariable = async ( beforeRequest: app.beforeRequest, }); - if (trigger && trigger.dedupeStrategy === 'unique') { - const lastInternalIds = testRun ? [] : await flow?.lastInternalIds(); + if (trigger) { + if (trigger.dedupeStrategy === 'unique') { + const lastInternalIds = testRun ? [] : await flow?.lastInternalIds(); - const isAlreadyProcessed = (internalId: string) => { - if (testRun) return false; + const isAlreadyProcessed = (internalId: string) => { + if (testRun) return false; - return lastInternalIds?.includes(internalId); - }; + return lastInternalIds?.includes(internalId); + }; - $.flow.isAlreadyProcessed = isAlreadyProcessed; + $.flow.isAlreadyProcessed = isAlreadyProcessed; + } else if (trigger.dedupeStrategy === 'greatest') { + const isAlreadyProcessed = (internalId: string) => { + if (testRun) return false; + + return Number(internalId) <= Number($.flow.lastInternalId); + }; + + $.flow.isAlreadyProcessed = isAlreadyProcessed; + } } return $;