From cdf3d57270d8a1086c8506fa7a8a889662ee01c8 Mon Sep 17 00:00:00 2001 From: Behzad-rabiei Date: Sun, 16 Feb 2025 13:46:58 +0100 Subject: [PATCH 1/8] chore: update togethercrew.dev/db package --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 96cd298..1139d00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@notionhq/client": "^2.2.3", "@sentry/node": "^7.50.0", "@temporalio/client": "^1.11.3", - "@togethercrew.dev/db": "^3.2.3", + "@togethercrew.dev/db": "^3.3.0", "@togethercrew.dev/tc-messagebroker": "^0.0.50", "@types/express-session": "^1.17.7", "@types/morgan": "^1.9.5", @@ -3659,9 +3659,9 @@ "dev": true }, "node_modules/@togethercrew.dev/db": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@togethercrew.dev/db/-/db-3.2.3.tgz", - "integrity": "sha512-V2NqrrXyuJKornzhAfZymWYATp6KkjXrMxNPgb0c7LCsIo+tRLlqqQIkwYt5htI9ujBP5bemgtYHYykhQhWdpA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@togethercrew.dev/db/-/db-3.3.0.tgz", + "integrity": "sha512-5UYnxR0P5N8KAEsGUfIkbGT8B+wu4sU9hiKvLp5J9MeaebnPHp9U/Lie30ofjP3eOVetpE3SwO/HVuBrR4aYaw==", "license": "ISC", "dependencies": { "discord.js": "^14.7.1", diff --git a/package.json b/package.json index 7457546..77b93b8 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@notionhq/client": "^2.2.3", "@sentry/node": "^7.50.0", "@temporalio/client": "^1.11.3", - "@togethercrew.dev/db": "^3.2.3", + "@togethercrew.dev/db": "^3.3.0", "@togethercrew.dev/tc-messagebroker": "^0.0.50", "@types/express-session": "^1.17.7", "@types/morgan": "^1.9.5", From 1bb7f2a70f41fa3fc40751ddc0aace563b49e991 Mon Sep 17 00:00:00 2001 From: Behzad-rabiei Date: Sun, 16 Feb 2025 14:10:58 +0100 Subject: [PATCH 2/8] feat: update post platforms and patch module/:moduleid api to add website platform --- src/services/platform.service.ts | 2 +- src/validations/module.validation.ts | 15 +++++++++++--- src/validations/platform.validation.ts | 28 ++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/src/services/platform.service.ts b/src/services/platform.service.ts index 3b47b7f..5ac45d6 100644 --- a/src/services/platform.service.ts +++ b/src/services/platform.service.ts @@ -179,7 +179,7 @@ function getMetadataKey(platformName: string): string { case PlatformNames.Discourse: return 'id'; default: - throw new Error('Unsupported platform'); + return ''; } } diff --git a/src/validations/module.validation.ts b/src/validations/module.validation.ts index 8fda1cd..64037de 100644 --- a/src/validations/module.validation.ts +++ b/src/validations/module.validation.ts @@ -1,12 +1,14 @@ import Joi from 'joi'; -import { objectId } from './custom.validation'; + import { - PlatformNames, - ModuleNames, HivemindPlatformNames, + ModuleNames, + PlatformNames, ViolationDetectionPlatformNames, } from '@togethercrew.dev/db'; +import { objectId } from './custom.validation'; + const createModule = { body: Joi.object().keys({ name: Joi.string() @@ -77,6 +79,9 @@ const hivemindMediaWikiMetadata = () => { }); }; +const websiteMediaWikiMetadata = () => { + return Joi.object().keys({}); +}; const hivemindOptions = () => { return Joi.object().keys({ platforms: Joi.array().items( @@ -107,6 +112,10 @@ const hivemindOptions = () => { is: PlatformNames.MediaWiki, then: hivemindMediaWikiMetadata(), }, + { + is: PlatformNames.Website, + then: websiteMediaWikiMetadata(), + }, ], otherwise: Joi.any().forbidden(), }).required(), diff --git a/src/validations/platform.validation.ts b/src/validations/platform.validation.ts index 1ce249e..df25322 100644 --- a/src/validations/platform.validation.ts +++ b/src/validations/platform.validation.ts @@ -28,6 +28,12 @@ const discordUpdateMetadata = () => { analyzerStartedAt: Joi.date(), }); }; + +const websiteUpdateMetadata = () => { + return Joi.object().keys({ + resources: Joi.array().items(Joi.string().uri({ scheme: ['http', 'https'] })), + }); +}; const twitterMetadata = () => { return Joi.object().keys({ id: Joi.string().required(), @@ -92,6 +98,14 @@ const discourseMetadata = () => { }); }; +const websiteMetadata = () => { + return Joi.object().keys({ + resources: Joi.array() + .items(Joi.string().uri({ scheme: ['http', 'https'] })) + .required(), + }); +}; + const createPlatform = { body: Joi.object().keys({ name: Joi.string() @@ -132,6 +146,10 @@ const createPlatform = { is: PlatformNames.Telegram, then: telegramMetadata, }, + { + is: PlatformNames.Website, + then: websiteMetadata, + }, ], }).required(), }), @@ -201,6 +219,16 @@ const dynamicUpdatePlatform = (req: Request) => { }), }; } + case PlatformNames.Website: { + return { + params: Joi.object().keys({ + platformId: Joi.required().custom(objectId), + }), + body: Joi.object().required().keys({ + metadata: websiteUpdateMetadata(), + }), + }; + } default: req.allowInput = false; return {}; From 7cac820600209a3c36e5422f3f7c91cd172c9dfc Mon Sep 17 00:00:00 2001 From: Behzad-rabiei Date: Sun, 16 Feb 2025 14:55:34 +0100 Subject: [PATCH 3/8] fix: fix website platform creation bugs --- src/controllers/platform.controller.ts | 1 + src/services/platform.service.ts | 5 ++++- src/validations/platform.validation.ts | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/controllers/platform.controller.ts b/src/controllers/platform.controller.ts index 15ba5fd..b6f12db 100644 --- a/src/controllers/platform.controller.ts +++ b/src/controllers/platform.controller.ts @@ -26,6 +26,7 @@ const logger = parentLogger.child({ module: 'PlatformController' }); const createPlatform = catchAsync(async function (req: IAuthRequest, res: Response) { const community = req.community; + console.log(req.body); const platform = await platformService.managePlatformConnection(community?.id, req.body); platformService.callExtractionApp(platform); res.status(httpStatus.CREATED).send(platform); diff --git a/src/services/platform.service.ts b/src/services/platform.service.ts index 5ac45d6..52fe2c3 100644 --- a/src/services/platform.service.ts +++ b/src/services/platform.service.ts @@ -178,8 +178,10 @@ function getMetadataKey(platformName: string): string { return 'baseURL'; case PlatformNames.Discourse: return 'id'; + case PlatformNames.Website: + return 'resources'; default: - return ''; + throw new Error('Unsupported platform'); } } @@ -210,6 +212,7 @@ const managePlatformConnection = async ( const activePlatformOtherCommunity = await Platform.findOne({ community: { $ne: communityId }, [`metadata.${metadataKey}`]: metadataId, + name: platformData.name, }); if (activePlatformOtherCommunity) { diff --git a/src/validations/platform.validation.ts b/src/validations/platform.validation.ts index df25322..002c122 100644 --- a/src/validations/platform.validation.ts +++ b/src/validations/platform.validation.ts @@ -144,11 +144,11 @@ const createPlatform = { }, { is: PlatformNames.Telegram, - then: telegramMetadata, + then: telegramMetadata(), }, { is: PlatformNames.Website, - then: websiteMetadata, + then: websiteMetadata(), }, ], }).required(), From ebba36bfb02c12b435e8fac4737e8f384730164e Mon Sep 17 00:00:00 2001 From: Behzad-rabiei Date: Sun, 16 Feb 2025 14:56:08 +0100 Subject: [PATCH 4/8] doc: update docs to add website platform --- src/docs/module.doc.yml | 5 ++++- src/docs/platform.doc.yml | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/docs/module.doc.yml b/src/docs/module.doc.yml index 202870f..c19c0fc 100644 --- a/src/docs/module.doc.yml +++ b/src/docs/module.doc.yml @@ -169,7 +169,8 @@ paths: name: type: string description: Name of the platform. - enum: ['discord', 'google', 'github', 'notion', 'mediaWiki', 'discourse'] + enum: + ['discord', 'google', 'github', 'notion', 'mediaWiki', 'discourse', 'telegram', 'website'] metadata: type: object description: Metadata specific to the module and platform. Varies depending on the platform name and module name. @@ -236,6 +237,8 @@ paths: items: type: string description: Metadata for the hivemind module on MediaWiki. + - type: object + description: Metadata for the hivemind module on website. - type: object properties: selectedEmails: diff --git a/src/docs/platform.doc.yml b/src/docs/platform.doc.yml index 82264c5..de8cadb 100644 --- a/src/docs/platform.doc.yml +++ b/src/docs/platform.doc.yml @@ -69,6 +69,7 @@ paths: - mediaWiki - discourse - telegram + - website description: Name of the platform to create. Must be one of the supported platforms. community: type: string @@ -194,7 +195,17 @@ paths: properties: chat: type: object - description: Metadata for Telegram. + description: Metadata for Website. + - type: object + required: [resources] + properties: + resources: + type: array + items: + type: string + format: uri + description: Metadata for Website. + responses: '201': description: Platform created successfully. @@ -227,6 +238,8 @@ paths: - github - notion - mediaWiki + - telegram + - website - in: query name: community schema: From 41442acdcc8c3d1499142546d075a7b2af7757c7 Mon Sep 17 00:00:00 2001 From: Behzad-rabiei Date: Sun, 16 Feb 2025 15:27:05 +0100 Subject: [PATCH 5/8] fix: fix bugs --- src/controllers/platform.controller.ts | 16 +++---- src/services/platform.service.ts | 9 ++++ src/services/temporal/website.service.ts | 54 ++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 11 deletions(-) create mode 100644 src/services/temporal/website.service.ts diff --git a/src/controllers/platform.controller.ts b/src/controllers/platform.controller.ts index b6f12db..b72bdb1 100644 --- a/src/controllers/platform.controller.ts +++ b/src/controllers/platform.controller.ts @@ -6,19 +6,14 @@ 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'; @@ -26,7 +21,6 @@ const logger = parentLogger.child({ module: 'PlatformController' }); const createPlatform = catchAsync(async function (req: IAuthRequest, res: Response) { const community = req.community; - console.log(req.body); const platform = await platformService.managePlatformConnection(community?.id, req.body); platformService.callExtractionApp(platform); res.status(httpStatus.CREATED).send(platform); diff --git a/src/services/platform.service.ts b/src/services/platform.service.ts index 52fe2c3..277ca58 100644 --- a/src/services/platform.service.ts +++ b/src/services/platform.service.ts @@ -81,6 +81,15 @@ const callExtractionApp = async (platform: HydratedDocument): Promise await platform.save(); return; } + case PlatformNames.Website: { + const scheduleId = await discourseService.coreService.createDiscourseSchedule( + platform.id as string, + platform.metadata?.id as string, + ); + platform.set('metadata.scheduleId', scheduleId); + await platform.save(); + return; + } default: { return; } diff --git a/src/services/temporal/website.service.ts b/src/services/temporal/website.service.ts new file mode 100644 index 0000000..6dc3d71 --- /dev/null +++ b/src/services/temporal/website.service.ts @@ -0,0 +1,54 @@ +import { CalendarSpec, Client, ScheduleHandle, ScheduleOverlapPolicy } from '@temporalio/client'; + +import config from '../../config'; +import { TemporalCoreService } from './core.service'; + +class TemporalDiscourseService extends TemporalCoreService { + public async createSchedule(platformId: string, endpoint: string): Promise { + const initiationTime = new Date(); + const hour = initiationTime.getUTCHours(); + const minute = initiationTime.getUTCMinutes(); + + const calendarSpec: CalendarSpec = { + hour, + minute, + comment: `Daily schedule at ${hour}:${minute} UTC`, + }; + + try { + const client: Client = await this.getClient(); + return client.schedule.create({ + action: { + type: 'startWorkflow', + workflowType: 'DiscourseExtractWorkflow', + args: [{ endpoint, platformId }], + taskQueue: config.temporal.heavyQueue, + }, + scheduleId: `discourse/${encodeURIComponent(endpoint)}`, + policies: { + catchupWindow: '1 day', + overlap: ScheduleOverlapPolicy.SKIP, + }, + spec: { + calendars: [calendarSpec], + }, + }); + } catch (error) { + throw new Error(`Failed to create Temporal schedule: ${(error as Error).message}`); + } + } + + public async pauseSchedule(scheduleId: string): Promise { + const client: Client = await this.getClient(); + const handle = client.schedule.getHandle(scheduleId); + await handle.pause(); + } + + public async deleteSchedule(scheduleId: string): Promise { + const client: Client = await this.getClient(); + const handle = client.schedule.getHandle(scheduleId); + await handle.delete(); + } +} + +export default new TemporalDiscourseService(); From c53f23dab79673700a83fc37325d3a7686c79a61 Mon Sep 17 00:00:00 2001 From: Behzad-rabiei Date: Mon, 17 Feb 2025 15:06:50 +0100 Subject: [PATCH 6/8] feat: add website temporal service --- src/services/temporal/discourse.service.ts | 7 ++++- src/services/temporal/website.service.ts | 33 ++++++++++++++-------- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/services/temporal/discourse.service.ts b/src/services/temporal/discourse.service.ts index 4c62178..b53b5bb 100644 --- a/src/services/temporal/discourse.service.ts +++ b/src/services/temporal/discourse.service.ts @@ -1,6 +1,11 @@ +import parentLogger from 'src/config/logger'; + import { CalendarSpec, Client, ScheduleHandle, ScheduleOverlapPolicy } from '@temporalio/client'; -import { TemporalCoreService } from './core.service'; + import config from '../../config'; +import { TemporalCoreService } from './core.service'; + +const logger = parentLogger.child({ module: 'DiscourseTemporalService' }); class TemporalDiscourseService extends TemporalCoreService { public async createSchedule(platformId: string, endpoint: string): Promise { diff --git a/src/services/temporal/website.service.ts b/src/services/temporal/website.service.ts index 6dc3d71..dd89aeb 100644 --- a/src/services/temporal/website.service.ts +++ b/src/services/temporal/website.service.ts @@ -1,43 +1,54 @@ +import { ObjectId } from 'mongoose'; +import parentLogger from 'src/config/logger'; + import { CalendarSpec, Client, ScheduleHandle, ScheduleOverlapPolicy } from '@temporalio/client'; import config from '../../config'; import { TemporalCoreService } from './core.service'; -class TemporalDiscourseService extends TemporalCoreService { - public async createSchedule(platformId: string, endpoint: string): Promise { +const logger = parentLogger.child({ module: 'WebsiteTemporalService' }); + +class TemporalWebsiteService extends TemporalCoreService { + public async createSchedule(platformId: ObjectId): Promise { const initiationTime = new Date(); + const dayNumber = initiationTime.getUTCDay(); const hour = initiationTime.getUTCHours(); const minute = initiationTime.getUTCMinutes(); + const DAY_NAMES = ['SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY'] as const; + const dayOfWeek = DAY_NAMES[dayNumber]; const calendarSpec: CalendarSpec = { + dayOfWeek, hour, minute, - comment: `Daily schedule at ${hour}:${minute} UTC`, + comment: `Weekly schedule for ${dayOfWeek} at ${hour}:${minute} UTC`, }; try { const client: Client = await this.getClient(); + return client.schedule.create({ + scheduleId: `website/${platformId}`, + spec: { + calendars: [calendarSpec], + }, action: { type: 'startWorkflow', - workflowType: 'DiscourseExtractWorkflow', - args: [{ endpoint, platformId }], + workflowType: 'WebsiteIngestionSchedulerWorkflow', + args: [{ platformId }], taskQueue: config.temporal.heavyQueue, }, - scheduleId: `discourse/${encodeURIComponent(endpoint)}`, policies: { catchupWindow: '1 day', overlap: ScheduleOverlapPolicy.SKIP, }, - spec: { - calendars: [calendarSpec], - }, }); } catch (error) { - throw new Error(`Failed to create Temporal schedule: ${(error as Error).message}`); + throw new Error(`Failed to create or update website ingestion schedule: ${(error as Error).message}`); } } + public async pauseSchedule(scheduleId: string): Promise { const client: Client = await this.getClient(); const handle = client.schedule.getHandle(scheduleId); @@ -51,4 +62,4 @@ class TemporalDiscourseService extends TemporalCoreService { } } -export default new TemporalDiscourseService(); +export default new TemporalWebsiteService(); From 18cb677a80d5f3ab7b4a1fb45d5614d4042eaa17 Mon Sep 17 00:00:00 2001 From: Behzad-rabiei Date: Mon, 17 Feb 2025 15:38:50 +0100 Subject: [PATCH 7/8] feat: trigger website temporal on hivemind module update --- src/services/index.ts | 2 ++ src/services/module.service.ts | 17 ++++++++---- src/services/platform.service.ts | 9 ------ src/services/temporal/website.service.ts | 5 ++-- src/services/website/core.service.ts | 35 ++++++++++++++++++++++++ src/services/website/index.ts | 5 ++++ 6 files changed, 55 insertions(+), 18 deletions(-) create mode 100644 src/services/website/core.service.ts create mode 100644 src/services/website/index.ts diff --git a/src/services/index.ts b/src/services/index.ts index 5c514d0..1ed950d 100644 --- a/src/services/index.ts +++ b/src/services/index.ts @@ -13,6 +13,7 @@ import platformService from './platform.service'; import reputationScoreService from './reputationScore.service'; import sagaService from './saga.service'; import telegramService from './telegram'; +import websiteService from './temporal/website.service'; import tokenService from './token.service'; import twitterService from './twitter.service'; import userService from './user.service'; @@ -36,4 +37,5 @@ export { discourseService, telegramService, reputationScoreService, + websiteService }; diff --git a/src/services/module.service.ts b/src/services/module.service.ts index a8b9e8e..dd81f4d 100644 --- a/src/services/module.service.ts +++ b/src/services/module.service.ts @@ -1,6 +1,9 @@ -import { FilterQuery, HydratedDocument, Types } from 'mongoose'; +import { FilterQuery, HydratedDocument, ObjectId, Types } from 'mongoose'; -import { IModule, IModuleUpdateBody, Module } from '@togethercrew.dev/db'; +import { IModule, IModuleUpdateBody, Module, ModuleNames, PlatformNames } from '@togethercrew.dev/db'; + +import platformService from './platform.service'; +import websiteService from './website'; /** * Create a module @@ -60,7 +63,6 @@ const updateModule = async ( module: HydratedDocument, updateBody: Partial, ): Promise> => { - // Check if `options.platforms` is in the updateBody if (updateBody.options && updateBody.options.platforms) { if (updateBody.options.platforms[0].name == undefined) { { @@ -69,15 +71,18 @@ const updateModule = async ( else module.options?.platforms.push(updateBody.options.platforms[0]); } } else { - // Iterate through each platform in the incoming update for (const newPlatform of updateBody.options.platforms) { const existingPlatform = module.options?.platforms.find((p) => p.name === newPlatform.name); if (existingPlatform) { - // If the platform already exists, update it existingPlatform.metadata = newPlatform.metadata; } else { - // If the platform does not exist, add new module.options?.platforms.push(newPlatform); + if (module.name === ModuleNames.Hivemind && newPlatform.name === PlatformNames.Website) { + const scheduleId = await websiteService.coreService.createWebsiteSchedule(newPlatform.platform); + const platform = await platformService.getPlatformById(newPlatform.platform); + platform?.set('metadata.scheduleId', scheduleId); + await platform?.save(); + } } } } diff --git a/src/services/platform.service.ts b/src/services/platform.service.ts index 277ca58..52fe2c3 100644 --- a/src/services/platform.service.ts +++ b/src/services/platform.service.ts @@ -81,15 +81,6 @@ const callExtractionApp = async (platform: HydratedDocument): Promise await platform.save(); return; } - case PlatformNames.Website: { - const scheduleId = await discourseService.coreService.createDiscourseSchedule( - platform.id as string, - platform.metadata?.id as string, - ); - platform.set('metadata.scheduleId', scheduleId); - await platform.save(); - return; - } default: { return; } diff --git a/src/services/temporal/website.service.ts b/src/services/temporal/website.service.ts index dd89aeb..869e81b 100644 --- a/src/services/temporal/website.service.ts +++ b/src/services/temporal/website.service.ts @@ -1,4 +1,4 @@ -import { ObjectId } from 'mongoose'; +import { Types } from 'mongoose'; import parentLogger from 'src/config/logger'; import { CalendarSpec, Client, ScheduleHandle, ScheduleOverlapPolicy } from '@temporalio/client'; @@ -9,7 +9,7 @@ import { TemporalCoreService } from './core.service'; const logger = parentLogger.child({ module: 'WebsiteTemporalService' }); class TemporalWebsiteService extends TemporalCoreService { - public async createSchedule(platformId: ObjectId): Promise { + public async createSchedule(platformId: Types.ObjectId): Promise { const initiationTime = new Date(); const dayNumber = initiationTime.getUTCDay(); const hour = initiationTime.getUTCHours(); @@ -48,7 +48,6 @@ class TemporalWebsiteService extends TemporalCoreService { } } - public async pauseSchedule(scheduleId: string): Promise { const client: Client = await this.getClient(); const handle = client.schedule.getHandle(scheduleId); diff --git a/src/services/website/core.service.ts b/src/services/website/core.service.ts new file mode 100644 index 0000000..a93b42f --- /dev/null +++ b/src/services/website/core.service.ts @@ -0,0 +1,35 @@ + + +import { Types } from 'mongoose'; + +import parentLogger from '../../config/logger'; +import { ApiError } from '../../utils'; +import temporalWebsite from '../temporal/website.service'; + +const logger = parentLogger.child({ module: 'WebsiteCoreService' }); + +async function createWebsiteSchedule(platformId: Types.ObjectId): Promise { + try { + const schedule = await temporalWebsite.createSchedule(platformId); + logger.info(`Started schedule '${schedule.scheduleId}'`); + await schedule.trigger(); + return schedule.scheduleId; + } catch (error) { + logger.error(error, 'Failed to trigger website schedule.'); + throw new ApiError(590, 'Failed to create website schedule.'); + } +} + +async function deleteWebsiteSchedule(scheduleId: string): Promise { + try { + await temporalWebsite.deleteSchedule(scheduleId); + } catch (error) { + logger.error(error, 'Failed to delete website schedule.'); + throw new ApiError(590, 'Failed to delete website schedule.'); + } +} + +export default { + createWebsiteSchedule, + deleteWebsiteSchedule, +}; diff --git a/src/services/website/index.ts b/src/services/website/index.ts new file mode 100644 index 0000000..2c70ec6 --- /dev/null +++ b/src/services/website/index.ts @@ -0,0 +1,5 @@ +import coreService from './core.service'; + +export default { + coreService, +}; From 23eb600fc202984a3dcf152ba80bacd8b6f27350 Mon Sep 17 00:00:00 2001 From: Behzad-rabiei Date: Wed, 19 Feb 2025 11:52:01 +0100 Subject: [PATCH 8/8] style: format code --- src/controllers/platform.controller.ts | 15 ++++++++++----- src/services/index.ts | 2 +- src/services/website/core.service.ts | 2 -- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/controllers/platform.controller.ts b/src/controllers/platform.controller.ts index 936b949..5c11067 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/index.ts b/src/services/index.ts index 1ed950d..75fd628 100644 --- a/src/services/index.ts +++ b/src/services/index.ts @@ -37,5 +37,5 @@ export { discourseService, telegramService, reputationScoreService, - websiteService + websiteService, }; diff --git a/src/services/website/core.service.ts b/src/services/website/core.service.ts index a93b42f..3761f52 100644 --- a/src/services/website/core.service.ts +++ b/src/services/website/core.service.ts @@ -1,5 +1,3 @@ - - import { Types } from 'mongoose'; import parentLogger from '../../config/logger';