From 6792056b73293c3ab5d6d49ffd205e6cd00a4228 Mon Sep 17 00:00:00 2001 From: Weiko Date: Fri, 9 Aug 2024 16:07:58 +0200 Subject: [PATCH] Fix query runner exceptions not being handled properly (#6593) ## Context We recently introduced a try catch in the different resolvers of the query runner to handle exceptions via workspaceQueryRunnerGraphqlApiExceptionHandler and convert them to proper errors. However this was never called as expected because query runner methods were async. This is a regression from https://github.com/twentyhq/twenty/pull/6324 ## Before Screenshot 2024-08-09 at 15 34 02 ## After Screenshot 2024-08-09 at 15 33 46 --- .../factories/create-many-resolver.factory.ts | 4 ++-- .../factories/create-one-resolver.factory.ts | 4 ++-- .../factories/delete-many-resolver.factory.ts | 4 ++-- .../factories/delete-one-resolver.factory.ts | 4 ++-- .../factories/find-duplicates-resolver.factory.ts | 4 ++-- .../factories/find-many-resolver.factory.ts | 4 ++-- .../factories/find-one-resolver.factory.ts | 4 ++-- .../factories/update-many-resolver.factory.ts | 4 ++-- .../factories/update-one-resolver.factory.ts | 4 ++-- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/create-many-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/create-many-resolver.factory.ts index 6b40eb2db..467488192 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/create-many-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/create-many-resolver.factory.ts @@ -25,9 +25,9 @@ export class CreateManyResolverFactory ): Resolver { const internalContext = context; - return (_source, args, context, info) => { + return async (_source, args, context, info) => { try { - return this.workspaceQueryRunnerService.createMany(args, { + return await this.workspaceQueryRunnerService.createMany(args, { authContext: internalContext.authContext, objectMetadataItem: internalContext.objectMetadataItem, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/create-one-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/create-one-resolver.factory.ts index 5ae1a939e..24fdfe023 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/create-one-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/create-one-resolver.factory.ts @@ -25,9 +25,9 @@ export class CreateOneResolverFactory ): Resolver { const internalContext = context; - return (_source, args, context, info) => { + return async (_source, args, context, info) => { try { - return this.workspaceQueryRunnerService.createOne(args, { + return await this.workspaceQueryRunnerService.createOne(args, { authContext: internalContext.authContext, objectMetadataItem: internalContext.objectMetadataItem, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-many-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-many-resolver.factory.ts index ba415d92c..a8d36f3e4 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-many-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-many-resolver.factory.ts @@ -25,9 +25,9 @@ export class DeleteManyResolverFactory ): Resolver { const internalContext = context; - return (_source, args, context, info) => { + return async (_source, args, context, info) => { try { - return this.workspaceQueryRunnerService.deleteMany(args, { + return await this.workspaceQueryRunnerService.deleteMany(args, { authContext: internalContext.authContext, objectMetadataItem: internalContext.objectMetadataItem, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-one-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-one-resolver.factory.ts index f9bde1bf3..93f249cdd 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-one-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-one-resolver.factory.ts @@ -25,9 +25,9 @@ export class DeleteOneResolverFactory ): Resolver { const internalContext = context; - return (_source, args, context, info) => { + return async (_source, args, context, info) => { try { - return this.workspaceQueryRunnerService.deleteOne(args, { + return await this.workspaceQueryRunnerService.deleteOne(args, { authContext: internalContext.authContext, objectMetadataItem: internalContext.objectMetadataItem, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-duplicates-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-duplicates-resolver.factory.ts index bba60e721..0a1494efb 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-duplicates-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-duplicates-resolver.factory.ts @@ -25,9 +25,9 @@ export class FindDuplicatesResolverFactory ): Resolver { const internalContext = context; - return (_source, args, context, info) => { + return async (_source, args, context, info) => { try { - return this.workspaceQueryRunnerService.findDuplicates(args, { + return await this.workspaceQueryRunnerService.findDuplicates(args, { authContext: internalContext.authContext, objectMetadataItem: internalContext.objectMetadataItem, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-many-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-many-resolver.factory.ts index 24ee24f74..76391b27e 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-many-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-many-resolver.factory.ts @@ -25,9 +25,9 @@ export class FindManyResolverFactory ): Resolver { const internalContext = context; - return (_source, args, context, info) => { + return async (_source, args, context, info) => { try { - return this.workspaceQueryRunnerService.findMany(args, { + return await this.workspaceQueryRunnerService.findMany(args, { authContext: internalContext.authContext, objectMetadataItem: internalContext.objectMetadataItem, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-one-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-one-resolver.factory.ts index 47a51e4ad..d6a679593 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-one-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-one-resolver.factory.ts @@ -25,9 +25,9 @@ export class FindOneResolverFactory ): Resolver { const internalContext = context; - return (_source, args, context, info) => { + return async (_source, args, context, info) => { try { - return this.workspaceQueryRunnerService.findOne(args, { + return await this.workspaceQueryRunnerService.findOne(args, { authContext: internalContext.authContext, objectMetadataItem: internalContext.objectMetadataItem, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-many-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-many-resolver.factory.ts index 888764ec2..c2328d12b 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-many-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-many-resolver.factory.ts @@ -25,9 +25,9 @@ export class UpdateManyResolverFactory ): Resolver { const internalContext = context; - return (_source, args, context, info) => { + return async (_source, args, context, info) => { try { - return this.workspaceQueryRunnerService.updateMany(args, { + return await this.workspaceQueryRunnerService.updateMany(args, { authContext: internalContext.authContext, objectMetadataItem: internalContext.objectMetadataItem, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-one-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-one-resolver.factory.ts index 2e802c3ff..c7a7dc6ba 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-one-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-one-resolver.factory.ts @@ -25,9 +25,9 @@ export class UpdateOneResolverFactory ): Resolver { const internalContext = context; - return (_source, args, context, info) => { + return async (_source, args, context, info) => { try { - return this.workspaceQueryRunnerService.updateOne(args, { + return await this.workspaceQueryRunnerService.updateOne(args, { authContext: internalContext.authContext, objectMetadataItem: internalContext.objectMetadataItem, info,