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)); return new Date(parseInt(ast.value, 10));
} }
if (ast.kind === Kind.STRING) {
return new Date(ast.value);
}
return null; return null;
}, },
}); });

View File

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

View File

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

View File

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