14064 extensibility add coretriggereventlistener table (#14138)

This Pr continues the extensibility journey
- adds a `core.databaseEventTrigger` table
- add a oneToMany relation between `core.serverlessFunction` and
`core.databaseEventTrigger`
- add a job `CallDatabaseEventTriggerJobsJob` triggered by
`EntityEventsToDbListener` triggering `serverlessFunction` based on the
`core.databaseEventTrigger.settings.eventName`
- add a new `trigger-queue` to carry this job
- renamed `DatabaseEventTriggerListener` into
`WorkflowDatabaseEventTriggerListener`
This commit is contained in:
martmull
2025-08-29 08:11:35 +02:00
committed by GitHub
parent b364acf5bb
commit 71d97c5398
13 changed files with 254 additions and 15 deletions
@@ -7,7 +7,7 @@ import { WorkflowCommonModule } from 'src/modules/workflow/common/workflow-commo
import { AutomatedTriggerWorkspaceService } from 'src/modules/workflow/workflow-trigger/automated-trigger/automated-trigger.workspace-service';
import { WorkflowCronTriggerCronCommand } from 'src/modules/workflow/workflow-trigger/automated-trigger/crons/commands/workflow-cron-trigger.cron.command';
import { WorkflowCronTriggerCronJob } from 'src/modules/workflow/workflow-trigger/automated-trigger/crons/jobs/workflow-cron-trigger-cron.job';
import { DatabaseEventTriggerListener } from 'src/modules/workflow/workflow-trigger/automated-trigger/listeners/database-event-trigger.listener';
import { WorkflowDatabaseEventTriggerListener } from 'src/modules/workflow/workflow-trigger/automated-trigger/listeners/workflow-database-event-trigger.listener';
@Module({
imports: [
@@ -17,7 +17,7 @@ import { DatabaseEventTriggerListener } from 'src/modules/workflow/workflow-trig
],
providers: [
AutomatedTriggerWorkspaceService,
DatabaseEventTriggerListener,
WorkflowDatabaseEventTriggerListener,
WorkflowCronTriggerCronJob,
WorkflowCronTriggerCronCommand,
],
@@ -4,13 +4,13 @@ import { MessageQueueService } from 'src/engine/core-modules/message-queue/servi
import { TwentyORMGlobalManager } from 'src/engine/twenty-orm/twenty-orm-global.manager';
import { AutomatedTriggerType } from 'src/modules/workflow/common/standard-objects/workflow-automated-trigger.workspace-entity';
import { WorkflowCommonWorkspaceService } from 'src/modules/workflow/common/workspace-services/workflow-common.workspace-service';
import { DatabaseEventTriggerListener } from 'src/modules/workflow/workflow-trigger/automated-trigger/listeners/database-event-trigger.listener';
import { WorkflowDatabaseEventTriggerListener } from 'src/modules/workflow/workflow-trigger/automated-trigger/listeners/workflow-database-event-trigger.listener';
import { WorkflowTriggerJob } from 'src/modules/workflow/workflow-trigger/jobs/workflow-trigger.job';
import { getMockObjectMetadataEntity } from 'src/utils/__test__/get-object-metadata-entity.mock';
import { getMockObjectMetadataItemWithFieldsMaps } from 'src/utils/__test__/get-object-metadata-item-with-fields-maps.mock';
describe('DatabaseEventTriggerListener', () => {
let listener: DatabaseEventTriggerListener;
describe('WorkflowDatabaseEventTriggerListener', () => {
let listener: WorkflowDatabaseEventTriggerListener;
let twentyORMGlobalManager: jest.Mocked<TwentyORMGlobalManager>;
let messageQueueService: jest.Mocked<MessageQueueService>;
@@ -29,7 +29,7 @@ describe('DatabaseEventTriggerListener', () => {
const module: TestingModule = await Test.createTestingModule({
providers: [
DatabaseEventTriggerListener,
WorkflowDatabaseEventTriggerListener,
{
provide: TwentyORMGlobalManager,
useValue: twentyORMGlobalManager,
@@ -83,8 +83,8 @@ describe('DatabaseEventTriggerListener', () => {
],
}).compile();
listener = module.get<DatabaseEventTriggerListener>(
DatabaseEventTriggerListener,
listener = module.get<WorkflowDatabaseEventTriggerListener>(
WorkflowDatabaseEventTriggerListener,
);
});
@@ -29,8 +29,10 @@ import {
} from 'src/modules/workflow/workflow-trigger/jobs/workflow-trigger.job';
@Injectable()
export class DatabaseEventTriggerListener {
private readonly logger = new Logger('DatabaseEventTriggerListener');
export class WorkflowDatabaseEventTriggerListener {
private readonly logger = new Logger(
WorkflowDatabaseEventTriggerListener.name,
);
constructor(
private readonly twentyORMGlobalManager: TwentyORMGlobalManager,