From 7f43ef5de5c6755b4c41f64dd9a90093568128dd Mon Sep 17 00:00:00 2001 From: faris Aljohari <83524184+farisaljohari@users.noreply.github.com> Date: Thu, 24 Apr 2025 02:14:58 +0300 Subject: [PATCH] feat: integrate PowerClamp service and repositories across multiple modules --- .../firebase/devices-status/devices-status.module.ts | 10 ++++++++++ .../modules/power-clamp/entities/power-clamp.entity.ts | 5 ++++- src/commission-device/commission-device.module.ts | 10 ++++++++++ src/community/community.module.ts | 10 ++++++++++ src/door-lock/door.lock.module.ts | 10 ++++++++++ src/group/group.module.ts | 10 ++++++++++ src/invite-user/invite-user.module.ts | 10 ++++++++++ src/project/project.module.ts | 10 ++++++++++ src/space-model/space-model.module.ts | 10 ++++++++++ src/space/space.module.ts | 10 ++++++++++ src/vistor-password/visitor-password.module.ts | 10 ++++++++++ 11 files changed, 104 insertions(+), 1 deletion(-) diff --git a/libs/common/src/firebase/devices-status/devices-status.module.ts b/libs/common/src/firebase/devices-status/devices-status.module.ts index 54d5cfa..544c419 100644 --- a/libs/common/src/firebase/devices-status/devices-status.module.ts +++ b/libs/common/src/firebase/devices-status/devices-status.module.ts @@ -3,12 +3,22 @@ import { DeviceStatusFirebaseController } from './controllers/devices-status.con import { DeviceStatusFirebaseService } from './services/devices-status.service'; import { DeviceRepository } from '@app/common/modules/device/repositories'; import { DeviceStatusLogRepository } from '@app/common/modules/device-status-log/repositories/device-status.repository'; +import { PowerClampService } from '@app/common/helper/services/power.clamp.service'; +import { + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, +} from '@app/common/modules/power-clamp/repositories'; @Module({ providers: [ DeviceStatusFirebaseService, DeviceRepository, DeviceStatusLogRepository, + PowerClampService, + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, ], controllers: [DeviceStatusFirebaseController], exports: [DeviceStatusFirebaseService, DeviceStatusLogRepository], diff --git a/libs/common/src/modules/power-clamp/entities/power-clamp.entity.ts b/libs/common/src/modules/power-clamp/entities/power-clamp.entity.ts index 150379d..51ea4c5 100644 --- a/libs/common/src/modules/power-clamp/entities/power-clamp.entity.ts +++ b/libs/common/src/modules/power-clamp/entities/power-clamp.entity.ts @@ -1,9 +1,10 @@ -import { Column, Entity, ManyToOne } from 'typeorm'; +import { Column, Entity, ManyToOne, Unique } from 'typeorm'; import { AbstractEntity } from '../../abstract/entities/abstract.entity'; import { PowerClampDto } from '../dtos'; import { DeviceEntity } from '../../device/entities/device.entity'; @Entity({ name: 'power-clamp-energy-consumed-hourly' }) +@Unique(['deviceUuid', 'date', 'hour']) export class PowerClampHourlyEntity extends AbstractEntity { @Column({ nullable: false }) public deviceUuid: string; @@ -35,6 +36,7 @@ export class PowerClampHourlyEntity extends AbstractEntity { } } @Entity({ name: 'power-clamp-energy-consumed-daily' }) +@Unique(['deviceUuid', 'date']) export class PowerClampDailyEntity extends AbstractEntity { @Column({ nullable: false }) public deviceUuid: string; @@ -63,6 +65,7 @@ export class PowerClampDailyEntity extends AbstractEntity { } } @Entity({ name: 'power-clamp-energy-consumed-monthly' }) +@Unique(['deviceUuid', 'month']) export class PowerClampMonthlyEntity extends AbstractEntity { @Column({ nullable: false }) public deviceUuid: string; diff --git a/src/commission-device/commission-device.module.ts b/src/commission-device/commission-device.module.ts index ebf0516..203eb2c 100644 --- a/src/commission-device/commission-device.module.ts +++ b/src/commission-device/commission-device.module.ts @@ -21,6 +21,12 @@ import { import { AutomationRepository } from '@app/common/modules/automation/repositories'; import { CommunityRepository } from '@app/common/modules/community/repositories'; import { SubspaceRepository } from '@app/common/modules/space/repositories/subspace.repository'; +import { + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, +} from '@app/common/modules/power-clamp/repositories'; +import { PowerClampService } from '@app/common/helper/services/power.clamp.service'; @Module({ imports: [ConfigModule, SpaceRepositoryModule], @@ -43,6 +49,10 @@ import { SubspaceRepository } from '@app/common/modules/space/repositories/subsp AutomationRepository, CommunityRepository, SubspaceRepository, + PowerClampService, + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, ], exports: [], }) diff --git a/src/community/community.module.ts b/src/community/community.module.ts index 81bef0d..b32d130 100644 --- a/src/community/community.module.ts +++ b/src/community/community.module.ts @@ -56,6 +56,12 @@ import { SceneRepository, } from '@app/common/modules/scene/repositories'; import { AutomationRepository } from '@app/common/modules/automation/repositories'; +import { PowerClampService } from '@app/common/helper/services/power.clamp.service'; +import { + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, +} from '@app/common/modules/power-clamp/repositories'; @Module({ imports: [ConfigModule, SpaceRepositoryModule, UserRepositoryModule], @@ -102,6 +108,10 @@ import { AutomationRepository } from '@app/common/modules/automation/repositorie SceneIconRepository, SceneRepository, AutomationRepository, + PowerClampService, + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, ], exports: [CommunityService, SpacePermissionService], }) diff --git a/src/door-lock/door.lock.module.ts b/src/door-lock/door.lock.module.ts index 2e00893..0451ae4 100644 --- a/src/door-lock/door.lock.module.ts +++ b/src/door-lock/door.lock.module.ts @@ -20,6 +20,12 @@ import { import { SceneDeviceRepository } from '@app/common/modules/scene-device/repositories'; import { AutomationRepository } from '@app/common/modules/automation/repositories'; import { ProjectRepository } from '@app/common/modules/project/repositiories'; +import { PowerClampService } from '@app/common/helper/services/power.clamp.service'; +import { + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, +} from '@app/common/modules/power-clamp/repositories'; @Module({ imports: [ConfigModule, DeviceRepositoryModule], controllers: [DoorLockController], @@ -40,6 +46,10 @@ import { ProjectRepository } from '@app/common/modules/project/repositiories'; SceneRepository, SceneDeviceRepository, AutomationRepository, + PowerClampService, + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, ], exports: [DoorLockService], }) diff --git a/src/group/group.module.ts b/src/group/group.module.ts index 6b3f0b0..02d1ab4 100644 --- a/src/group/group.module.ts +++ b/src/group/group.module.ts @@ -18,6 +18,12 @@ import { SceneRepository, } from '@app/common/modules/scene/repositories'; import { AutomationRepository } from '@app/common/modules/automation/repositories'; +import { PowerClampService } from '@app/common/helper/services/power.clamp.service'; +import { + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, +} from '@app/common/modules/power-clamp/repositories'; @Module({ imports: [ConfigModule, DeviceRepositoryModule], controllers: [GroupController], @@ -37,6 +43,10 @@ import { AutomationRepository } from '@app/common/modules/automation/repositorie SceneIconRepository, SceneRepository, AutomationRepository, + PowerClampService, + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, ], exports: [GroupService], }) diff --git a/src/invite-user/invite-user.module.ts b/src/invite-user/invite-user.module.ts index 4ce83d4..87caf92 100644 --- a/src/invite-user/invite-user.module.ts +++ b/src/invite-user/invite-user.module.ts @@ -76,6 +76,12 @@ import { SceneRepository, } from '@app/common/modules/scene/repositories'; import { AutomationRepository } from '@app/common/modules/automation/repositories'; +import { + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, +} from '@app/common/modules/power-clamp/repositories'; +import { PowerClampService } from '@app/common/helper/services/power.clamp.service'; @Module({ imports: [ConfigModule, InviteUserRepositoryModule, CommunityModule], @@ -140,6 +146,10 @@ import { AutomationRepository } from '@app/common/modules/automation/repositorie SceneIconRepository, SceneRepository, AutomationRepository, + PowerClampService, + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, ], exports: [InviteUserService], }) diff --git a/src/project/project.module.ts b/src/project/project.module.ts index 6c8bef8..15625ab 100644 --- a/src/project/project.module.ts +++ b/src/project/project.module.ts @@ -60,6 +60,12 @@ import { SceneRepository, } from '@app/common/modules/scene/repositories'; import { AutomationRepository } from '@app/common/modules/automation/repositories'; +import { PowerClampService } from '@app/common/helper/services/power.clamp.service'; +import { + PowerClampDailyRepository, + PowerClampHourlyRepository, + PowerClampMonthlyRepository, +} from '@app/common/modules/power-clamp/repositories'; const CommandHandlers = [CreateOrphanSpaceHandler]; @@ -112,6 +118,10 @@ const CommandHandlers = [CreateOrphanSpaceHandler]; SceneRepository, AutomationRepository, SubspaceModelProductAllocationRepoitory, + PowerClampService, + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, ], exports: [ProjectService, CqrsModule], }) diff --git a/src/space-model/space-model.module.ts b/src/space-model/space-model.module.ts index 3f22918..80db39b 100644 --- a/src/space-model/space-model.module.ts +++ b/src/space-model/space-model.module.ts @@ -58,6 +58,12 @@ import { } from '@app/common/modules/scene/repositories'; import { AutomationRepository } from '@app/common/modules/automation/repositories'; import { CommunityModule } from 'src/community/community.module'; +import { PowerClampService } from '@app/common/helper/services/power.clamp.service'; +import { + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, +} from '@app/common/modules/power-clamp/repositories'; const CommandHandlers = [ PropogateUpdateSpaceModelHandler, @@ -112,6 +118,10 @@ const CommandHandlers = [ SpaceProductAllocationRepository, SubspaceProductAllocationRepository, SubSpaceService, + PowerClampService, + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, ], exports: [CqrsModule, SpaceModelService], }) diff --git a/src/space/space.module.ts b/src/space/space.module.ts index 3808a0e..2e3f8a1 100644 --- a/src/space/space.module.ts +++ b/src/space/space.module.ts @@ -83,6 +83,12 @@ import { SubspaceModelProductAllocationService } from 'src/space-model/services/ import { SpaceProductAllocationService } from './services/space-product-allocation.service'; import { SubspaceProductAllocationService } from './services/subspace/subspace-product-allocation.service'; import { SpaceValidationController } from './controllers/space-validation.controller'; +import { PowerClampService } from '@app/common/helper/services/power.clamp.service'; +import { + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, +} from '@app/common/modules/power-clamp/repositories'; export const CommandHandlers = [DisableSpaceHandler]; @@ -154,6 +160,10 @@ export const CommandHandlers = [DisableSpaceHandler]; SubspaceProductAllocationService, SpaceProductAllocationRepository, SubspaceProductAllocationRepository, + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, + PowerClampService, ], exports: [SpaceService], }) diff --git a/src/vistor-password/visitor-password.module.ts b/src/vistor-password/visitor-password.module.ts index 778abd4..e16adf6 100644 --- a/src/vistor-password/visitor-password.module.ts +++ b/src/vistor-password/visitor-password.module.ts @@ -22,6 +22,12 @@ import { import { SceneDeviceRepository } from '@app/common/modules/scene-device/repositories'; import { AutomationRepository } from '@app/common/modules/automation/repositories'; import { ProjectRepository } from '@app/common/modules/project/repositiories'; +import { PowerClampService } from '@app/common/helper/services/power.clamp.service'; +import { + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, +} from '@app/common/modules/power-clamp/repositories'; @Module({ imports: [ConfigModule, DeviceRepositoryModule, DoorLockModule], controllers: [VisitorPasswordController], @@ -43,6 +49,10 @@ import { ProjectRepository } from '@app/common/modules/project/repositiories'; SceneDeviceRepository, AutomationRepository, ProjectRepository, + PowerClampService, + PowerClampHourlyRepository, + PowerClampDailyRepository, + PowerClampMonthlyRepository, ], exports: [VisitorPasswordService], })