From 30d0866579ff2e62c6663b7b85aa21bdaf083ce4 Mon Sep 17 00:00:00 2001 From: hannathkadher Date: Fri, 27 Dec 2024 09:32:20 +0400 Subject: [PATCH] subspace check --- .../services/subspace/subspace.service.ts | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/space/services/subspace/subspace.service.ts b/src/space/services/subspace/subspace.service.ts index e826071..08a7ef1 100644 --- a/src/space/services/subspace/subspace.service.ts +++ b/src/space/services/subspace/subspace.service.ts @@ -43,6 +43,12 @@ export class SubSpaceService { queryRunner: QueryRunner, ): Promise { try { + const subspaceNames = subspaceData.map((data) => data.subspaceName); + + await this.checkExistingNamesInSpace( + subspaceNames, + subspaceData[0].space, + ); const subspaces = subspaceData.map((data) => queryRunner.manager.create(this.subspaceRepository.target, data), ); @@ -143,6 +149,10 @@ export class SubSpaceService { ); try { + await this.checkExistingNamesInSpace( + [addSubspaceDto.subspaceName], + space, + ); const newSubspace = this.subspaceRepository.create({ ...addSubspaceDto, space, @@ -450,10 +460,7 @@ export class SubSpaceService { } } - private async validateName( - names: string[], - space: SpaceEntity, - ): Promise { + private async checkForDuplicateNames(names: string[]): Promise { const seenNames = new Set(); const duplicateNames = new Set(); @@ -469,14 +476,20 @@ export class SubSpaceService { HttpStatus.CONFLICT, ); } + } + private async checkExistingNamesInSpace( + names: string[], + space: SpaceEntity, + ): Promise { const existingNames = await this.subspaceRepository.find({ select: ['subspaceName'], where: { - subspaceName: In([...seenNames]), + subspaceName: In(names), space: { uuid: space.uuid, }, + disabled: false, }, }); @@ -490,4 +503,12 @@ export class SubSpaceService { ); } } + + private async validateName( + names: string[], + space: SpaceEntity, + ): Promise { + await this.checkForDuplicateNames(names); + await this.checkExistingNamesInSpace(names, space); + } }