From 22ce59a198a8eefe6eb924a6a675e98f9229273a Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Fri, 5 Aug 2022 13:10:22 +0800 Subject: [PATCH] Enqueue or delete sync task when create or disable integration --- .../api/src/resolvers/integrations/index.ts | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/api/src/resolvers/integrations/index.ts b/packages/api/src/resolvers/integrations/index.ts index 42bb0a405..362ee9745 100644 --- a/packages/api/src/resolvers/integrations/index.ts +++ b/packages/api/src/resolvers/integrations/index.ts @@ -11,6 +11,8 @@ import { Integration } from '../../entity/integration' import { analytics } from '../../utils/analytics' import { env } from '../../env' import { validateToken } from '../../services/integrations' +import { deleteTask, enqueueSyncWithIntegration } from '../../utils/createTask' +import { AppDataSource } from '../../server' export const setIntegrationResolver = authorized< SetIntegrationSuccess, @@ -73,7 +75,26 @@ export const setIntegrationResolver = authorized< } } - const integration = await getRepository(Integration).save(integrationToSave) + const integration = await AppDataSource.transaction(async (t) => { + const integration = await t + .getRepository(Integration) + .save(integrationToSave) + if (integration.enabled) { + // create a task to sync all the pages + const taskName = await enqueueSyncWithIntegration( + user.id, + integration.type + ) + log.info('enqueued task', taskName) + await t + .getRepository(Integration) + .update({ id: integration.id }, { taskName }) + } else if (integration.taskName) { + await deleteTask(integration.taskName) + log.info('task deleted', integration.taskName) + } + return integration + }) analytics.track({ userId: uid,