diff --git a/libs/common/src/models/typeOrmCustom.model.ts b/libs/common/src/models/typeOrmCustom.model.ts index 76054d0..043b13c 100644 --- a/libs/common/src/models/typeOrmCustom.model.ts +++ b/libs/common/src/models/typeOrmCustom.model.ts @@ -98,14 +98,17 @@ export function TypeORMCustomModel(repository: Repository) { if (customQueryBuilder) { const qb = customQueryBuilder.skip(skip).take(size); + if (order) { Object.keys(order).forEach((key) => { qb.addOrderBy(key, order[key]); }); } + if (whereClause) { - qb.where(whereClause); + qb.andWhere(whereClause); // Use .andWhere instead of .where to avoid overwriting conditions } + if (select) { const selectColumns = Array.isArray(select) ? select @@ -114,6 +117,7 @@ export function TypeORMCustomModel(repository: Repository) { ); qb.select(selectColumns as string[]); } + [data, count] = await qb.getManyAndCount(); } else { [data, count] = await repository.findAndCount({ diff --git a/src/space-model/services/space-model.service.ts b/src/space-model/services/space-model.service.ts index c7ad97a..e71d05f 100644 --- a/src/space-model/services/space-model.service.ts +++ b/src/space-model/services/space-model.service.ts @@ -121,12 +121,27 @@ export class SpaceModelService { pageable.include = 'subspaceModels,tags,subspaceModels.tags,tags.product,subspaceModels.tags.product'; - const queryBuilder = this.spaceModelRepository + const queryBuilder = await this.spaceModelRepository .createQueryBuilder('spaceModel') - .leftJoinAndSelect('spaceModel.subspaceModels', 'subspaceModels') - .leftJoinAndSelect('spaceModel.tags', 'tags') + .leftJoinAndSelect( + 'spaceModel.subspaceModels', + 'subspaceModels', + 'subspaceModels.disabled = :subspaceDisabled', + { subspaceDisabled: false }, + ) + .leftJoinAndSelect( + 'spaceModel.tags', + 'tags', + 'tags.disabled = :tagsDisabled', + { tagsDisabled: false }, + ) .leftJoinAndSelect('tags.product', 'spaceTagproduct') - .leftJoinAndSelect('subspaceModels.tags', 'subspaceModelTags') + .leftJoinAndSelect( + 'subspaceModels.tags', + 'subspaceModelTags', + 'subspaceModelTags.disabled = :subspaceModelTagsDisabled', + { subspaceModelTagsDisabled: false }, + ) .leftJoinAndSelect('subspaceModelTags.product', 'subspaceTagproduct') .where('spaceModel.disabled = :disabled', { disabled: false }) .andWhere('spaceModel.project = :projectUuid', { @@ -144,6 +159,8 @@ export class SpaceModelService { queryBuilder, ); + console.log(baseResponseDto); + return new PageResponse( baseResponseDto, paginationResponseDto, diff --git a/src/space/services/space.service.ts b/src/space/services/space.service.ts index 87700e4..2e64c62 100644 --- a/src/space/services/space.service.ts +++ b/src/space/services/space.service.ts @@ -184,11 +184,31 @@ export class SpaceService { 'children.disabled = :disabled', { disabled: false }, ) - .leftJoinAndSelect('space.incomingConnections', 'incomingConnections') - .leftJoinAndSelect('space.tags', 'tags') + .leftJoinAndSelect( + 'space.incomingConnections', + 'incomingConnections', + 'incomingConnections.disabled = :incomingConnectionDisabled', + { incomingConnectionDisabled: false }, + ) + .leftJoinAndSelect( + 'space.tags', + 'tags', + 'tags.disabled = :tagDisabled', + { tagDisabled: false }, + ) .leftJoinAndSelect('tags.product', 'tagProduct') - .leftJoinAndSelect('space.subspaces', 'subspaces') - .leftJoinAndSelect('subspaces.tags', 'subspaceTags') + .leftJoinAndSelect( + 'space.subspaces', + 'subspaces', + 'subspaces.disabled = :subspaceDisabled', + { subspaceDisabled: false }, + ) + .leftJoinAndSelect( + 'subspaces.tags', + 'subspaceTags', + 'subspaceTags.disabled = :subspaceTagsDisabled', + { subspaceTagsDisabled: false }, + ) .leftJoinAndSelect('subspaceTags.product', 'subspaceTagProduct') .where('space.community_id = :communityUuid', { communityUuid }) .andWhere('space.spaceName != :orphanSpaceName', {