diff --git a/packages/twenty-server/src/engine/core-modules/environment/environment-variables.ts b/packages/twenty-server/src/engine/core-modules/environment/environment-variables.ts index 20f6d5fb0..b4d4f7757 100644 --- a/packages/twenty-server/src/engine/core-modules/environment/environment-variables.ts +++ b/packages/twenty-server/src/engine/core-modules/environment/environment-variables.ts @@ -910,7 +910,7 @@ export class EnvironmentVariables { description: 'Throttle limit for workflow execution', }) @CastToPositiveNumber() - WORKFLOW_EXEC_THROTTLE_LIMIT = 10; + WORKFLOW_EXEC_THROTTLE_LIMIT = 500; @EnvironmentVariablesMetadata({ group: EnvironmentVariablesGroup.RateLimiting, diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/messaging-import-manager.module.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/messaging-import-manager.module.ts index adf5edf64..fd9219f8e 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/messaging-import-manager.module.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/messaging-import-manager.module.ts @@ -5,7 +5,9 @@ import { BillingModule } from 'src/engine/core-modules/billing/billing.module'; import { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.entity'; +import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; +import { WorkspaceEventEmitterModule } from 'src/engine/workspace-event-emitter/workspace-event-emitter.module'; import { EmailAliasManagerModule } from 'src/modules/connected-account/email-alias-manager/email-alias-manager.module'; import { RefreshTokensManagerModule } from 'src/modules/connected-account/refresh-tokens-manager/connected-account-refresh-tokens-manager.module'; import { MessagingCommonModule } from 'src/modules/messaging/common/messaging-common.module'; @@ -52,6 +54,8 @@ import { MessagingMonitoringModule } from 'src/modules/messaging/monitoring/mess MessageParticipantManagerModule, MessagingMonitoringModule, MessagingMessageCleanerModule, + WorkspaceEventEmitterModule, + TypeOrmModule.forFeature([ObjectMetadataEntity], 'metadata'), ], providers: [ MessagingMessageListFetchCronCommand, diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.ts index 3ff7efd77..7d7047e6b 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-save-messages-and-enqueue-contact-creation.service.ts @@ -1,12 +1,16 @@ import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; -import { EntityManager } from 'typeorm'; +import { EntityManager, Repository } from 'typeorm'; +import { DatabaseEventAction } from 'src/engine/api/graphql/graphql-query-runner/enums/database-event-action'; import { InjectMessageQueue } from 'src/engine/core-modules/message-queue/decorators/message-queue.decorator'; import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants'; import { MessageQueueService } from 'src/engine/core-modules/message-queue/services/message-queue.service'; import { FieldActorSource } from 'src/engine/metadata-modules/field-metadata/composite-types/actor.composite-type'; +import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager'; +import { WorkspaceEventEmitter } from 'src/engine/workspace-event-emitter/workspace-event-emitter'; import { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { CreateCompanyAndContactJob, @@ -34,6 +38,9 @@ export class MessagingSaveMessagesAndEnqueueContactCreationService { private readonly messageService: MessagingMessageService, private readonly messageParticipantService: MessagingMessageParticipantService, private readonly twentyORMManager: TwentyORMManager, + private readonly workspaceEventEmitter: WorkspaceEventEmitter, + @InjectRepository(ObjectMetadataEntity, 'metadata') + private readonly objectMetadataRepository: Repository, ) {} async saveMessagesAndEnqueueContactCreation( @@ -111,6 +118,25 @@ export class MessagingSaveMessagesAndEnqueueContactCreationService { }, ); + const messageMetadata = await this.objectMetadataRepository.findOneOrFail({ + where: { nameSingular: 'message', workspaceId }, + }); + + this.workspaceEventEmitter.emitDatabaseBatchEvent({ + objectMetadataNameSingular: 'message', + action: DatabaseEventAction.CREATED, + events: messagesToSave.map((message) => { + return { + recordId: message.headerMessageId, + objectMetadata: messageMetadata, + properties: { + after: message, + }, + }; + }), + workspaceId, + }); + if (messageChannel.isContactAutoCreationEnabled) { const contactsToCreate = participantsWithMessageId.filter( (participant) => participant.shouldCreateContact,