From 8c46e66cf5710e28b07cb03b5a292d3566d0b115 Mon Sep 17 00:00:00 2001 From: Weiko Date: Tue, 20 Feb 2024 17:27:31 +0100 Subject: [PATCH] Fix delete with no result should not throw (#4091) * Fix delete with no result should not throw * add logs * Delete packages/twenty-server/src/database/typeorm/metadata/migrations/1708442904165-addOnDeleteActionToRelationMetadata.ts --- .../workspace-query-runner.service.ts | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/packages/twenty-server/src/workspace/workspace-query-runner/workspace-query-runner.service.ts b/packages/twenty-server/src/workspace/workspace-query-runner/workspace-query-runner.service.ts index 5885efae3..915ecf598 100644 --- a/packages/twenty-server/src/workspace/workspace-query-runner/workspace-query-runner.service.ts +++ b/packages/twenty-server/src/workspace/workspace-query-runner/workspace-query-runner.service.ts @@ -1,4 +1,9 @@ -import { BadRequestException, Inject, Injectable } from '@nestjs/common'; +import { + BadRequestException, + Inject, + Injectable, + Logger, +} from '@nestjs/common'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { IConnection } from 'src/utils/pagination/interfaces/connection.interface'; @@ -45,6 +50,8 @@ import { computePgGraphQLError } from './utils/compute-pg-graphql-error.util'; @Injectable() export class WorkspaceQueryRunnerService { + private readonly logger = new Logger(WorkspaceQueryRunnerService.name); + constructor( private readonly workspaceQueryBuilderFactory: WorkspaceQueryBuilderFactory, private readonly workspaceDataSourceService: WorkspaceDataSourceService, @@ -82,7 +89,7 @@ export class WorkspaceQueryRunnerService { const result = await this.execute(query, workspaceId); const end = performance.now(); - console.log( + this.logger.log( `query time: ${end - start} ms on query ${ options.objectMetadataItem.nameSingular }`, @@ -364,7 +371,18 @@ export class WorkspaceQueryRunnerService { const result = graphqlResult?.[0]?.resolve?.data?.[entityKey]; const errors = graphqlResult?.[0]?.resolve?.errors; - if (['update', 'deleteFrom'].includes(command) && !result.affectedCount) { + if (!result) { + this.logger.log( + `No result found for ${entityKey}, graphqlResult: ` + + JSON.stringify(graphqlResult, null, 3), + ); + } + + if ( + result && + ['update', 'deleteFrom'].includes(command) && + !result.affectedCount + ) { throw new BadRequestException('No rows were affected.'); }