Emit event on message creation (#11466)
adding event emitting on message creation
This commit is contained in:
@ -910,7 +910,7 @@ export class EnvironmentVariables {
|
|||||||
description: 'Throttle limit for workflow execution',
|
description: 'Throttle limit for workflow execution',
|
||||||
})
|
})
|
||||||
@CastToPositiveNumber()
|
@CastToPositiveNumber()
|
||||||
WORKFLOW_EXEC_THROTTLE_LIMIT = 10;
|
WORKFLOW_EXEC_THROTTLE_LIMIT = 500;
|
||||||
|
|
||||||
@EnvironmentVariablesMetadata({
|
@EnvironmentVariablesMetadata({
|
||||||
group: EnvironmentVariablesGroup.RateLimiting,
|
group: EnvironmentVariablesGroup.RateLimiting,
|
||||||
|
|||||||
@ -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 { FeatureFlagModule } from 'src/engine/core-modules/feature-flag/feature-flag.module';
|
||||||
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
||||||
import { DataSourceEntity } from 'src/engine/metadata-modules/data-source/data-source.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 { 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 { 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 { 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';
|
import { MessagingCommonModule } from 'src/modules/messaging/common/messaging-common.module';
|
||||||
@ -52,6 +54,8 @@ import { MessagingMonitoringModule } from 'src/modules/messaging/monitoring/mess
|
|||||||
MessageParticipantManagerModule,
|
MessageParticipantManagerModule,
|
||||||
MessagingMonitoringModule,
|
MessagingMonitoringModule,
|
||||||
MessagingMessageCleanerModule,
|
MessagingMessageCleanerModule,
|
||||||
|
WorkspaceEventEmitterModule,
|
||||||
|
TypeOrmModule.forFeature([ObjectMetadataEntity], 'metadata'),
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
MessagingMessageListFetchCronCommand,
|
MessagingMessageListFetchCronCommand,
|
||||||
|
|||||||
@ -1,12 +1,16 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
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 { 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 { 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 { 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 { 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 { 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 { ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity';
|
||||||
import {
|
import {
|
||||||
CreateCompanyAndContactJob,
|
CreateCompanyAndContactJob,
|
||||||
@ -34,6 +38,9 @@ export class MessagingSaveMessagesAndEnqueueContactCreationService {
|
|||||||
private readonly messageService: MessagingMessageService,
|
private readonly messageService: MessagingMessageService,
|
||||||
private readonly messageParticipantService: MessagingMessageParticipantService,
|
private readonly messageParticipantService: MessagingMessageParticipantService,
|
||||||
private readonly twentyORMManager: TwentyORMManager,
|
private readonly twentyORMManager: TwentyORMManager,
|
||||||
|
private readonly workspaceEventEmitter: WorkspaceEventEmitter,
|
||||||
|
@InjectRepository(ObjectMetadataEntity, 'metadata')
|
||||||
|
private readonly objectMetadataRepository: Repository<ObjectMetadataEntity>,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
async saveMessagesAndEnqueueContactCreation(
|
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) {
|
if (messageChannel.isContactAutoCreationEnabled) {
|
||||||
const contactsToCreate = participantsWithMessageId.filter(
|
const contactsToCreate = participantsWithMessageId.filter(
|
||||||
(participant) => participant.shouldCreateContact,
|
(participant) => participant.shouldCreateContact,
|
||||||
|
|||||||
Reference in New Issue
Block a user