diff --git a/libs/common/src/database/database.module.ts b/libs/common/src/database/database.module.ts index 2196901..373041c 100644 --- a/libs/common/src/database/database.module.ts +++ b/libs/common/src/database/database.module.ts @@ -25,6 +25,7 @@ import { InviteUserEntity, InviteUserSpaceEntity, } from '../modules/Invite-user/entities'; +import { SpaceDailyOccupancyDurationEntity } from '../modules/occupancy/entities'; import { PowerClampDailyEntity, PowerClampHourlyEntity, @@ -46,7 +47,6 @@ import { SubspaceModelProductAllocationEntity, } from '../modules/space-model/entities'; import { InviteSpaceEntity } from '../modules/space/entities/invite-space.entity'; -import { SpaceLinkEntity } from '../modules/space/entities/space-link.entity'; import { SpaceProductAllocationEntity } from '../modules/space/entities/space-product-allocation.entity'; import { SpaceEntity } from '../modules/space/entities/space.entity'; import { SubspaceProductAllocationEntity } from '../modules/space/entities/subspace/subspace-product-allocation.entity'; @@ -58,7 +58,6 @@ import { UserSpaceEntity, } from '../modules/user/entities'; import { VisitorPasswordEntity } from '../modules/visitor-password/entities'; -import { SpaceDailyOccupancyDurationEntity } from '../modules/occupancy/entities'; @Module({ imports: [ TypeOrmModule.forRootAsync({ @@ -87,7 +86,6 @@ import { SpaceDailyOccupancyDurationEntity } from '../modules/occupancy/entities PermissionTypeEntity, CommunityEntity, SpaceEntity, - SpaceLinkEntity, SubspaceEntity, UserSpaceEntity, DeviceUserPermissionEntity, diff --git a/libs/common/src/modules/space/entities/space-link.entity.ts b/libs/common/src/modules/space/entities/space-link.entity.ts index da11eb7..7223591 100644 --- a/libs/common/src/modules/space/entities/space-link.entity.ts +++ b/libs/common/src/modules/space/entities/space-link.entity.ts @@ -1,32 +1,3 @@ -import { Column, Entity, JoinColumn, ManyToOne } from 'typeorm'; import { AbstractEntity } from '../../abstract/entities/abstract.entity'; -import { SpaceEntity } from './space.entity'; -import { Direction } from '@app/common/constants/direction.enum'; -@Entity({ name: 'space-link' }) -export class SpaceLinkEntity extends AbstractEntity { - @ManyToOne(() => SpaceEntity, { nullable: false, onDelete: 'CASCADE' }) - @JoinColumn({ name: 'start_space_id' }) - public startSpace: SpaceEntity; - - @ManyToOne(() => SpaceEntity, { nullable: false, onDelete: 'CASCADE' }) - @JoinColumn({ name: 'end_space_id' }) - public endSpace: SpaceEntity; - - @Column({ - nullable: false, - default: false, - }) - public disabled: boolean; - - @Column({ - nullable: false, - enum: Object.values(Direction), - }) - direction: string; - - constructor(partial: Partial) { - super(); - Object.assign(this, partial); - } -} +export class SpaceLinkEntity extends AbstractEntity {} diff --git a/libs/common/src/modules/space/repositories/space.repository.ts b/libs/common/src/modules/space/repositories/space.repository.ts index a89a314..36cc548 100644 --- a/libs/common/src/modules/space/repositories/space.repository.ts +++ b/libs/common/src/modules/space/repositories/space.repository.ts @@ -1,7 +1,6 @@ import { Injectable } from '@nestjs/common'; import { DataSource, Repository } from 'typeorm'; import { InviteSpaceEntity } from '../entities/invite-space.entity'; -import { SpaceLinkEntity } from '../entities/space-link.entity'; import { SpaceProductAllocationEntity } from '../entities/space-product-allocation.entity'; import { SpaceEntity } from '../entities/space.entity'; @@ -13,11 +12,7 @@ export class SpaceRepository extends Repository { } @Injectable() -export class SpaceLinkRepository extends Repository { - constructor(private dataSource: DataSource) { - super(SpaceLinkEntity, dataSource.createEntityManager()); - } -} +export class SpaceLinkRepository {} @Injectable() export class InviteSpaceRepository extends Repository { diff --git a/src/community/community.module.ts b/src/community/community.module.ts index ea69401..0567ffb 100644 --- a/src/community/community.module.ts +++ b/src/community/community.module.ts @@ -78,6 +78,7 @@ import { AqiDataService } from '@app/common/helper/services/aqi.data.service'; ProjectRepository, SpaceService, InviteSpaceRepository, + // Todo: find out why this is needed SpaceLinkService, SubSpaceService, ValidationService, diff --git a/src/invite-user/invite-user.module.ts b/src/invite-user/invite-user.module.ts index d28ff10..31e3a9b 100644 --- a/src/invite-user/invite-user.module.ts +++ b/src/invite-user/invite-user.module.ts @@ -71,7 +71,6 @@ import { import { SpaceModelProductAllocationService } from 'src/space-model/services/space-model-product-allocation.service'; import { SubspaceModelProductAllocationService } from 'src/space-model/services/subspace/subspace-model-product-allocation.service'; import { - SpaceLinkService, SpaceService, SpaceUserService, SubspaceDeviceService, @@ -115,7 +114,6 @@ import { UserService, UserSpaceService } from 'src/users/services'; TimeZoneRepository, SpaceService, InviteSpaceRepository, - SpaceLinkService, SubSpaceService, ValidationService, NewTagService, diff --git a/src/power-clamp/power-clamp.module.ts b/src/power-clamp/power-clamp.module.ts index 6a36393..120e368 100644 --- a/src/power-clamp/power-clamp.module.ts +++ b/src/power-clamp/power-clamp.module.ts @@ -1,4 +1,5 @@ import { DeviceStatusFirebaseService } from '@app/common/firebase/devices-status/services/devices-status.service'; +import { AqiDataService } from '@app/common/helper/services/aqi.data.service'; import { OccupancyService } from '@app/common/helper/services/occupancy.service'; import { PowerClampService } from '@app/common/helper/services/power.clamp.service'; import { SqlLoaderService } from '@app/common/helper/services/sql-loader.service'; @@ -49,7 +50,6 @@ import { SpaceModelProductAllocationService } from 'src/space-model/services/spa import { SubspaceModelProductAllocationService } from 'src/space-model/services/subspace/subspace-model-product-allocation.service'; import { SpaceDeviceService, - SpaceLinkService, SpaceService, SubspaceDeviceService, SubSpaceService, @@ -60,7 +60,6 @@ import { SubspaceProductAllocationService } from 'src/space/services/subspace/su import { TagService } from 'src/tags/services'; import { PowerClampController } from './controllers'; import { PowerClampService as PowerClamp } from './services/power-clamp.service'; -import { AqiDataService } from '@app/common/helper/services/aqi.data.service'; @Module({ imports: [ConfigModule], controllers: [PowerClampController], @@ -90,7 +89,6 @@ import { AqiDataService } from '@app/common/helper/services/aqi.data.service'; SceneRepository, AutomationRepository, InviteSpaceRepository, - SpaceLinkService, SubSpaceService, TagService, SpaceModelService, diff --git a/src/project/project.module.ts b/src/project/project.module.ts index 2434fde..7c7f7d3 100644 --- a/src/project/project.module.ts +++ b/src/project/project.module.ts @@ -54,7 +54,6 @@ import { import { SpaceModelProductAllocationService } from 'src/space-model/services/space-model-product-allocation.service'; import { SubspaceModelProductAllocationService } from 'src/space-model/services/subspace/subspace-model-product-allocation.service'; import { - SpaceLinkService, SpaceService, SubspaceDeviceService, SubSpaceService, @@ -87,7 +86,6 @@ const CommandHandlers = [CreateOrphanSpaceHandler]; UserRepository, SpaceService, InviteSpaceRepository, - SpaceLinkService, SubSpaceService, ValidationService, TagService, diff --git a/src/space-model/space-model.module.ts b/src/space-model/space-model.module.ts index 3d868c6..4cd6435 100644 --- a/src/space-model/space-model.module.ts +++ b/src/space-model/space-model.module.ts @@ -46,7 +46,6 @@ import { CommunityService } from 'src/community/services'; import { DeviceService } from 'src/device/services'; import { SceneService } from 'src/scene/services'; import { - SpaceLinkService, SpaceService, SubspaceDeviceService, SubSpaceService, @@ -92,7 +91,6 @@ const CommandHandlers = [ DeviceRepository, TuyaService, CommunityRepository, - SpaceLinkService, SpaceLinkRepository, InviteSpaceRepository, NewTagService, diff --git a/src/space/handlers/disable-space.handler.ts b/src/space/handlers/disable-space.handler.ts index 089ab76..45d3f96 100644 --- a/src/space/handlers/disable-space.handler.ts +++ b/src/space/handlers/disable-space.handler.ts @@ -5,11 +5,7 @@ import { DeviceService } from 'src/device/services'; import { UserSpaceService } from 'src/users/services'; import { DataSource } from 'typeorm'; import { DisableSpaceCommand } from '../commands'; -import { - SpaceLinkService, - SpaceSceneService, - SubSpaceService, -} from '../services'; +import { SpaceSceneService, SubSpaceService } from '../services'; @CommandHandler(DisableSpaceCommand) export class DisableSpaceHandler @@ -19,7 +15,6 @@ export class DisableSpaceHandler private readonly subSpaceService: SubSpaceService, private readonly userService: UserSpaceService, private readonly deviceService: DeviceService, - private readonly spaceLinkService: SpaceLinkService, private readonly sceneService: SpaceSceneService, private readonly dataSource: DataSource, ) {} @@ -39,8 +34,6 @@ export class DisableSpaceHandler 'subspaces', 'parent', 'devices', - 'outgoingConnections', - 'incomingConnections', 'scenes', 'children', 'userSpaces', @@ -79,7 +72,6 @@ export class DisableSpaceHandler orphanSpace, queryRunner, ), - this.spaceLinkService.deleteSpaceLink(space, queryRunner), this.sceneService.deleteScenes(space, queryRunner), ]; diff --git a/src/space/services/space-link/space-link.service.ts b/src/space/services/space-link/space-link.service.ts index 4801fe6..af84c2b 100644 --- a/src/space/services/space-link/space-link.service.ts +++ b/src/space/services/space-link/space-link.service.ts @@ -1,121 +1,6 @@ -import { SpaceLinkEntity } from '@app/common/modules/space/entities/space-link.entity'; -import { SpaceEntity } from '@app/common/modules/space/entities/space.entity'; -import { SpaceLinkRepository } from '@app/common/modules/space/repositories'; -import { HttpException, HttpStatus, Injectable } from '@nestjs/common'; -import { QueryRunner } from 'typeorm'; +import { Injectable } from '@nestjs/common'; +// todo: find out why we need to import this +// in community module in order for the whole system to work @Injectable() -export class SpaceLinkService { - constructor(private readonly spaceLinkRepository: SpaceLinkRepository) {} - - async saveSpaceLink( - startSpaceId: string, - endSpaceId: string, - direction: string, - queryRunner: QueryRunner, - ): Promise { - try { - // Check if a link between the startSpace and endSpace already exists - const existingLink = await queryRunner.manager.findOne(SpaceLinkEntity, { - where: { - startSpace: { uuid: startSpaceId }, - endSpace: { uuid: endSpaceId }, - disabled: false, - }, - }); - - if (existingLink) { - // Update the direction if the link exists - existingLink.direction = direction; - await queryRunner.manager.save(SpaceLinkEntity, existingLink); - return; - } - - const existingEndSpaceLink = await queryRunner.manager.findOne( - SpaceLinkEntity, - { - where: { endSpace: { uuid: endSpaceId } }, - }, - ); - - if ( - existingEndSpaceLink && - existingEndSpaceLink.startSpace.uuid !== startSpaceId - ) { - throw new Error( - `Space with ID ${endSpaceId} is already an endSpace in another link and cannot be reused.`, - ); - } - - // Find start space - const startSpace = await queryRunner.manager.findOne(SpaceEntity, { - where: { uuid: startSpaceId }, - }); - - if (!startSpace) { - throw new HttpException( - `Start space with ID ${startSpaceId} not found.`, - HttpStatus.NOT_FOUND, - ); - } - - // Find end space - const endSpace = await queryRunner.manager.findOne(SpaceEntity, { - where: { uuid: endSpaceId }, - }); - - if (!endSpace) { - throw new HttpException( - `End space with ID ${endSpaceId} not found.`, - HttpStatus.NOT_FOUND, - ); - } - - // Create and save the space link - const spaceLink = this.spaceLinkRepository.create({ - startSpace, - endSpace, - direction, - }); - - await queryRunner.manager.save(SpaceLinkEntity, spaceLink); - } catch (error) { - throw new HttpException( - error.message || - `Failed to save space link. Internal Server Error: ${error.message}`, - error.status || HttpStatus.INTERNAL_SERVER_ERROR, - ); - } - } - async deleteSpaceLink( - space: SpaceEntity, - queryRunner: QueryRunner, - ): Promise { - try { - const spaceLinks = await queryRunner.manager.find(SpaceLinkEntity, { - where: [ - { startSpace: space, disabled: false }, - { endSpace: space, disabled: false }, - ], - }); - - if (spaceLinks.length === 0) { - return; - } - - const linkIds = spaceLinks.map((link) => link.uuid); - - await queryRunner.manager - .createQueryBuilder() - .update(SpaceLinkEntity) - .set({ disabled: true }) - .whereInIds(linkIds) - .execute(); - } catch (error) { - throw new HttpException( - `Failed to disable space links for the given space: ${error.message}`, - HttpStatus.INTERNAL_SERVER_ERROR, - ); - } - } -} +export class SpaceLinkService {} diff --git a/src/space/services/space.service.ts b/src/space/services/space.service.ts index a25f1b4..fb08b59 100644 --- a/src/space/services/space.service.ts +++ b/src/space/services/space.service.ts @@ -226,12 +226,7 @@ export class SpaceService { 'children.disabled = :disabled', { disabled: false }, ) - // .leftJoinAndSelect( - // 'space.incomingConnections', - // 'incomingConnections', - // 'incomingConnections.disabled = :incomingConnectionDisabled', - // { incomingConnectionDisabled: false }, - // ) + .leftJoinAndSelect('space.productAllocations', 'productAllocations') .leftJoinAndSelect('productAllocations.tag', 'tag') .leftJoinAndSelect('productAllocations.product', 'product') diff --git a/src/space/space.module.ts b/src/space/space.module.ts index 58f54a5..8229879 100644 --- a/src/space/space.module.ts +++ b/src/space/space.module.ts @@ -79,7 +79,6 @@ import { SpaceValidationController } from './controllers/space-validation.contro import { DisableSpaceHandler } from './handlers'; import { SpaceDeviceService, - SpaceLinkService, SpaceSceneService, SpaceService, SpaceUserService, @@ -110,7 +109,6 @@ export const CommandHandlers = [DisableSpaceHandler]; ProductRepository, SubSpaceService, SpaceDeviceService, - SpaceLinkService, SubspaceDeviceService, SpaceRepository, SubspaceRepository,