From 68d17b27c27f2648ba97f0356c9c074418b1c955 Mon Sep 17 00:00:00 2001 From: Behzad-rabiei Date: Tue, 8 Apr 2025 12:31:12 +0200 Subject: [PATCH 1/2] feat: add terminate workflow --- src/controllers/platform.controller.ts | 15 ++++++++++----- src/services/module.service.ts | 11 ++--------- src/services/platform.service.ts | 1 + src/services/temporal/website.service.ts | 11 +++++++++++ src/services/website/core.service.ts | 10 ++++++++++ 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/src/controllers/platform.controller.ts b/src/controllers/platform.controller.ts index a30b86d..77aa235 100644 --- a/src/controllers/platform.controller.ts +++ b/src/controllers/platform.controller.ts @@ -6,14 +6,19 @@ import { DatabaseManager, PlatformNames } from '@togethercrew.dev/db'; import config from '../config'; import parentLogger from '../config/logger'; -import { - discord, generateCodeChallenge, generateCodeVerifier, generateState, google, twitter -} from '../config/oAtuh2'; +import { discord, generateCodeChallenge, generateCodeVerifier, generateState, google, twitter } from '../config/oAtuh2'; import { IAuthAndPlatform, ISessionRequest } from '../interfaces'; import { IAuthRequest } from '../interfaces/Request.interface'; import { - discordServices, discourseService, githubService, googleService, notionService, platformService, - tokenService, twitterService, userService + discordServices, + discourseService, + githubService, + googleService, + notionService, + platformService, + tokenService, + twitterService, + userService, } from '../services'; import { catchAsync, pick } from '../utils'; diff --git a/src/services/module.service.ts b/src/services/module.service.ts index 823abf7..3f88b29 100644 --- a/src/services/module.service.ts +++ b/src/services/module.service.ts @@ -1,8 +1,6 @@ import { FilterQuery, HydratedDocument, ObjectId, Types } from 'mongoose'; -import { - IModule, IModuleUpdateBody, Module, ModuleNames, PlatformNames -} from '@togethercrew.dev/db'; +import { IModule, IModuleUpdateBody, Module, ModuleNames, PlatformNames } from '@togethercrew.dev/db'; import platformService from './platform.service'; import websiteService from './website'; @@ -65,14 +63,10 @@ const updateModule = async ( module: HydratedDocument, updateBody: Partial, ): Promise> => { - console.log('S1', module.name, updateBody.options?.platforms); - if (!updateBody.options?.platforms?.length) { return module.save(); } - console.log('S2', module.options); - if (!module.options) { module.options = { platforms: [] }; } else if (!module.options.platforms) { @@ -81,8 +75,6 @@ const updateModule = async ( const platforms = updateBody.options.platforms; - console.log('S3', platforms[0].name); - if (platforms[0].name === undefined) { const globalOption = module.options.platforms[0]; if (globalOption) { @@ -134,6 +126,7 @@ const handleHivemindWebsiteCase = async (platform: any) => { } else if (isActivated === false) { if (existingScheduleId) { await websiteService.coreService.deleteWebsiteSchedule(existingScheduleId); + await websiteService.coreService.terminateWebsiteWorkflow(platformDoc.community.toString()); platformDoc.set('metadata.scheduleId', null); await platformDoc.save(); diff --git a/src/services/platform.service.ts b/src/services/platform.service.ts index 3bc078a..b8a4ddd 100644 --- a/src/services/platform.service.ts +++ b/src/services/platform.service.ts @@ -374,6 +374,7 @@ const handleWebsiteResourceChanges = async ( if (platform.metadata.scheduleId) { await websiteService.coreService.deleteWebsiteSchedule(platform.metadata.scheduleId); + await websiteService.coreService.terminateWebsiteWorkflow(platform.community.toString()); updateBody.metadata.scheduleId = null; } diff --git a/src/services/temporal/website.service.ts b/src/services/temporal/website.service.ts index 9f05c4a..5b97016 100644 --- a/src/services/temporal/website.service.ts +++ b/src/services/temporal/website.service.ts @@ -60,6 +60,17 @@ class TemporalWebsiteService extends TemporalCoreService { const handle = client.schedule.getHandle(scheduleId); await handle.delete(); } + + public async terminateWebsiteWorkflow(communityId: string): Promise { + const workflowId = `website:ingestor:${communityId}`; + await this.terminateWorkflow(workflowId); + } + + public async terminateWorkflow(workflowId: string): Promise { + const client: Client = await this.getClient(); + const handle = client.workflow.getHandle(workflowId); + await handle.terminate(); + } } export default new TemporalWebsiteService(); diff --git a/src/services/website/core.service.ts b/src/services/website/core.service.ts index 3761f52..9070926 100644 --- a/src/services/website/core.service.ts +++ b/src/services/website/core.service.ts @@ -27,7 +27,17 @@ async function deleteWebsiteSchedule(scheduleId: string): Promise { } } +async function terminateWebsiteWorkflow(workflowId: string): Promise { + try { + await temporalWebsite.terminateWorkflow(workflowId); + } catch (error) { + logger.error(error, 'Failed to terminate website workflow.'); + throw new ApiError(590, 'Failed to terminate website workflow.'); + } +} + export default { createWebsiteSchedule, deleteWebsiteSchedule, + terminateWebsiteWorkflow, }; From 8a6bcb663bf832cda28180e8bc35669357e8b5b8 Mon Sep 17 00:00:00 2001 From: Behzad-rabiei Date: Tue, 8 Apr 2025 12:34:14 +0200 Subject: [PATCH 2/2] feat: add terminate workflow --- src/services/temporal/website.service.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/services/temporal/website.service.ts b/src/services/temporal/website.service.ts index 5b97016..c39a1e7 100644 --- a/src/services/temporal/website.service.ts +++ b/src/services/temporal/website.service.ts @@ -61,11 +61,6 @@ class TemporalWebsiteService extends TemporalCoreService { await handle.delete(); } - public async terminateWebsiteWorkflow(communityId: string): Promise { - const workflowId = `website:ingestor:${communityId}`; - await this.terminateWorkflow(workflowId); - } - public async terminateWorkflow(workflowId: string): Promise { const client: Client = await this.getClient(); const handle = client.workflow.getHandle(workflowId);