Fix eventEmitter emitting when diff is empty (#13560)

This commit is contained in:
Weiko
2025-08-01 19:13:26 +02:00
committed by GitHub
parent b98d8c4d39
commit 4624739879
@@ -1,8 +1,8 @@
import { Injectable } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { ObjectLiteral } from 'typeorm';
import { isDefined } from 'twenty-shared/utils';
import { ObjectLiteral } from 'typeorm';
import { DatabaseEventAction } from 'src/engine/api/graphql/graphql-query-runner/enums/database-event-action';
import { AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type';
@@ -70,37 +70,43 @@ export class WorkspaceEventEmitter {
});
break;
case DatabaseEventAction.UPDATED:
events = entityArray.map((after, idx) => {
if (!beforeEntities) {
throw new Error('beforeEntities is required for UPDATED action');
}
events = entityArray
.map((after, idx) => {
if (!beforeEntities) {
throw new Error('beforeEntities is required for UPDATED action');
}
const before = Array.isArray(beforeEntities)
? beforeEntities?.[idx]
: beforeEntities;
const before = Array.isArray(beforeEntities)
? beforeEntities?.[idx]
: beforeEntities;
const diff = objectRecordChangedValues(
before,
after,
objectMetadataItem,
) as Partial<ObjectRecordDiff<T>>;
const diff = objectRecordChangedValues(
before,
after,
objectMetadataItem,
) as Partial<ObjectRecordDiff<T>>;
const updatedFields = Object.keys(diff);
const updatedFields = Object.keys(diff);
const event = new ObjectRecordUpdateEvent<T>();
if (updatedFields.length === 0) {
return;
}
event.userId = authContext?.user?.id;
event.recordId = after.id;
event.objectMetadata = { ...objectMetadataItem, fields };
event.properties = {
before,
after,
updatedFields,
diff,
};
const event = new ObjectRecordUpdateEvent<T>();
return event;
});
event.userId = authContext?.user?.id;
event.recordId = after.id;
event.objectMetadata = { ...objectMetadataItem, fields };
event.properties = {
before,
after,
updatedFields,
diff,
};
return event;
})
.filter(isDefined);
break;
case DatabaseEventAction.DELETED:
events = entityArray.map((before) => {