Fix broken graphql playground (#13287)

Fixes https://github.com/twentyhq/twenty/issues/12991
Also fixes a regression on main where updateEvent are not correctly emit
when calling repository.update()
This commit is contained in:
Charles Bochet
2025-07-19 09:32:26 +02:00
committed by GitHub
parent 19dad8f23a
commit 62202af1a9
4 changed files with 24 additions and 17 deletions

View File

@ -15,6 +15,10 @@ export const DateScalarType = new GraphQLScalarType({
return new Date(parseInt(ast.value, 10));
}
if (ast.kind === Kind.STRING) {
return new Date(ast.value);
}
return null;
},
});

View File

@ -285,7 +285,7 @@ describe('WorkspaceEntityManager', () => {
it('should call createQueryBuilder with permissionOptions for update', async () => {
await entityManager.update('test-entity', {}, {}, mockPermissionOptions);
expect(entityManager['createQueryBuilder']).toHaveBeenCalledWith(
undefined,
'test-entity',
undefined,
undefined,
mockPermissionOptions,

View File

@ -275,6 +275,8 @@ export class WorkspaceEntityManager extends EntityManager {
partialEntity: QueryDeepPartialEntity<Entity>,
permissionOptions?: PermissionOptions,
): Promise<UpdateResult> {
const metadata = this.connection.getMetadata(target);
if (
criteria === undefined ||
criteria === null ||
@ -294,23 +296,23 @@ export class WorkspaceEntityManager extends EntityManager {
Array.isArray(criteria)
) {
return this.createQueryBuilder(
undefined,
undefined,
target,
metadata.name,
undefined,
permissionOptions,
)
.update(target)
.update()
.set(partialEntity)
.whereInIds(criteria)
.execute();
} else {
return this.createQueryBuilder(
undefined,
undefined,
target,
metadata.name,
undefined,
permissionOptions,
)
.update(target)
.update()
.set(partialEntity)
.where(criteria)
.execute();

View File

@ -71,19 +71,19 @@ export class WorkspaceUpdateQueryBuilder<
this.internalContext,
);
const beforeSelectQueryBuilder = new WorkspaceSelectQueryBuilder(
const eventSelectQueryBuilder = new WorkspaceSelectQueryBuilder(
this as unknown as WorkspaceSelectQueryBuilder<T>,
this.objectRecordsPermissions,
this.internalContext,
this.shouldBypassPermissionChecks,
true,
this.authContext,
);
beforeSelectQueryBuilder.expressionMap.wheres = this.expressionMap.wheres;
beforeSelectQueryBuilder.expressionMap.aliases = this.expressionMap.aliases;
beforeSelectQueryBuilder.setParameters(this.getParameters());
eventSelectQueryBuilder.expressionMap.wheres = this.expressionMap.wheres;
eventSelectQueryBuilder.expressionMap.aliases = this.expressionMap.aliases;
eventSelectQueryBuilder.setParameters(this.getParameters());
const before = await beforeSelectQueryBuilder.getMany();
const before = await eventSelectQueryBuilder.getMany();
const formattedBefore = formatResult<T[]>(
before,
@ -91,10 +91,11 @@ export class WorkspaceUpdateQueryBuilder<
this.internalContext.objectMetadataMaps,
);
const after = await super.execute();
const result = await super.execute();
const after = await eventSelectQueryBuilder.getMany();
const formattedAfter = formatResult<T[]>(
after.raw,
after,
objectMetadata,
this.internalContext.objectMetadataMaps,
);
@ -109,9 +110,9 @@ export class WorkspaceUpdateQueryBuilder<
});
return {
raw: after.raw,
raw: result.raw,
generatedMaps: formattedAfter,
affected: after.affected,
affected: result.affected,
};
}