feat: integrate PowerClamp service and repositories across multiple modules

This commit is contained in:
faris Aljohari
2025-04-24 02:14:58 +03:00
parent 531f93d42c
commit 7f43ef5de5
11 changed files with 104 additions and 1 deletions

View File

@ -3,12 +3,22 @@ import { DeviceStatusFirebaseController } from './controllers/devices-status.con
import { DeviceStatusFirebaseService } from './services/devices-status.service'; import { DeviceStatusFirebaseService } from './services/devices-status.service';
import { DeviceRepository } from '@app/common/modules/device/repositories'; import { DeviceRepository } from '@app/common/modules/device/repositories';
import { DeviceStatusLogRepository } from '@app/common/modules/device-status-log/repositories/device-status.repository'; 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({ @Module({
providers: [ providers: [
DeviceStatusFirebaseService, DeviceStatusFirebaseService,
DeviceRepository, DeviceRepository,
DeviceStatusLogRepository, DeviceStatusLogRepository,
PowerClampService,
PowerClampHourlyRepository,
PowerClampDailyRepository,
PowerClampMonthlyRepository,
], ],
controllers: [DeviceStatusFirebaseController], controllers: [DeviceStatusFirebaseController],
exports: [DeviceStatusFirebaseService, DeviceStatusLogRepository], exports: [DeviceStatusFirebaseService, DeviceStatusLogRepository],

View File

@ -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 { AbstractEntity } from '../../abstract/entities/abstract.entity';
import { PowerClampDto } from '../dtos'; import { PowerClampDto } from '../dtos';
import { DeviceEntity } from '../../device/entities/device.entity'; import { DeviceEntity } from '../../device/entities/device.entity';
@Entity({ name: 'power-clamp-energy-consumed-hourly' }) @Entity({ name: 'power-clamp-energy-consumed-hourly' })
@Unique(['deviceUuid', 'date', 'hour'])
export class PowerClampHourlyEntity extends AbstractEntity<PowerClampDto> { export class PowerClampHourlyEntity extends AbstractEntity<PowerClampDto> {
@Column({ nullable: false }) @Column({ nullable: false })
public deviceUuid: string; public deviceUuid: string;
@ -35,6 +36,7 @@ export class PowerClampHourlyEntity extends AbstractEntity<PowerClampDto> {
} }
} }
@Entity({ name: 'power-clamp-energy-consumed-daily' }) @Entity({ name: 'power-clamp-energy-consumed-daily' })
@Unique(['deviceUuid', 'date'])
export class PowerClampDailyEntity extends AbstractEntity<PowerClampDto> { export class PowerClampDailyEntity extends AbstractEntity<PowerClampDto> {
@Column({ nullable: false }) @Column({ nullable: false })
public deviceUuid: string; public deviceUuid: string;
@ -63,6 +65,7 @@ export class PowerClampDailyEntity extends AbstractEntity<PowerClampDto> {
} }
} }
@Entity({ name: 'power-clamp-energy-consumed-monthly' }) @Entity({ name: 'power-clamp-energy-consumed-monthly' })
@Unique(['deviceUuid', 'month'])
export class PowerClampMonthlyEntity extends AbstractEntity<PowerClampDto> { export class PowerClampMonthlyEntity extends AbstractEntity<PowerClampDto> {
@Column({ nullable: false }) @Column({ nullable: false })
public deviceUuid: string; public deviceUuid: string;

View File

@ -21,6 +21,12 @@ import {
import { AutomationRepository } from '@app/common/modules/automation/repositories'; import { AutomationRepository } from '@app/common/modules/automation/repositories';
import { CommunityRepository } from '@app/common/modules/community/repositories'; import { CommunityRepository } from '@app/common/modules/community/repositories';
import { SubspaceRepository } from '@app/common/modules/space/repositories/subspace.repository'; 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({ @Module({
imports: [ConfigModule, SpaceRepositoryModule], imports: [ConfigModule, SpaceRepositoryModule],
@ -43,6 +49,10 @@ import { SubspaceRepository } from '@app/common/modules/space/repositories/subsp
AutomationRepository, AutomationRepository,
CommunityRepository, CommunityRepository,
SubspaceRepository, SubspaceRepository,
PowerClampService,
PowerClampHourlyRepository,
PowerClampDailyRepository,
PowerClampMonthlyRepository,
], ],
exports: [], exports: [],
}) })

View File

@ -56,6 +56,12 @@ import {
SceneRepository, SceneRepository,
} from '@app/common/modules/scene/repositories'; } from '@app/common/modules/scene/repositories';
import { AutomationRepository } from '@app/common/modules/automation/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({ @Module({
imports: [ConfigModule, SpaceRepositoryModule, UserRepositoryModule], imports: [ConfigModule, SpaceRepositoryModule, UserRepositoryModule],
@ -102,6 +108,10 @@ import { AutomationRepository } from '@app/common/modules/automation/repositorie
SceneIconRepository, SceneIconRepository,
SceneRepository, SceneRepository,
AutomationRepository, AutomationRepository,
PowerClampService,
PowerClampHourlyRepository,
PowerClampDailyRepository,
PowerClampMonthlyRepository,
], ],
exports: [CommunityService, SpacePermissionService], exports: [CommunityService, SpacePermissionService],
}) })

View File

@ -20,6 +20,12 @@ import {
import { SceneDeviceRepository } from '@app/common/modules/scene-device/repositories'; import { SceneDeviceRepository } from '@app/common/modules/scene-device/repositories';
import { AutomationRepository } from '@app/common/modules/automation/repositories'; import { AutomationRepository } from '@app/common/modules/automation/repositories';
import { ProjectRepository } from '@app/common/modules/project/repositiories'; 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({ @Module({
imports: [ConfigModule, DeviceRepositoryModule], imports: [ConfigModule, DeviceRepositoryModule],
controllers: [DoorLockController], controllers: [DoorLockController],
@ -40,6 +46,10 @@ import { ProjectRepository } from '@app/common/modules/project/repositiories';
SceneRepository, SceneRepository,
SceneDeviceRepository, SceneDeviceRepository,
AutomationRepository, AutomationRepository,
PowerClampService,
PowerClampHourlyRepository,
PowerClampDailyRepository,
PowerClampMonthlyRepository,
], ],
exports: [DoorLockService], exports: [DoorLockService],
}) })

View File

@ -18,6 +18,12 @@ import {
SceneRepository, SceneRepository,
} from '@app/common/modules/scene/repositories'; } from '@app/common/modules/scene/repositories';
import { AutomationRepository } from '@app/common/modules/automation/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({ @Module({
imports: [ConfigModule, DeviceRepositoryModule], imports: [ConfigModule, DeviceRepositoryModule],
controllers: [GroupController], controllers: [GroupController],
@ -37,6 +43,10 @@ import { AutomationRepository } from '@app/common/modules/automation/repositorie
SceneIconRepository, SceneIconRepository,
SceneRepository, SceneRepository,
AutomationRepository, AutomationRepository,
PowerClampService,
PowerClampHourlyRepository,
PowerClampDailyRepository,
PowerClampMonthlyRepository,
], ],
exports: [GroupService], exports: [GroupService],
}) })

View File

@ -76,6 +76,12 @@ import {
SceneRepository, SceneRepository,
} from '@app/common/modules/scene/repositories'; } from '@app/common/modules/scene/repositories';
import { AutomationRepository } from '@app/common/modules/automation/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({ @Module({
imports: [ConfigModule, InviteUserRepositoryModule, CommunityModule], imports: [ConfigModule, InviteUserRepositoryModule, CommunityModule],
@ -140,6 +146,10 @@ import { AutomationRepository } from '@app/common/modules/automation/repositorie
SceneIconRepository, SceneIconRepository,
SceneRepository, SceneRepository,
AutomationRepository, AutomationRepository,
PowerClampService,
PowerClampHourlyRepository,
PowerClampDailyRepository,
PowerClampMonthlyRepository,
], ],
exports: [InviteUserService], exports: [InviteUserService],
}) })

View File

@ -60,6 +60,12 @@ import {
SceneRepository, SceneRepository,
} from '@app/common/modules/scene/repositories'; } from '@app/common/modules/scene/repositories';
import { AutomationRepository } from '@app/common/modules/automation/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]; const CommandHandlers = [CreateOrphanSpaceHandler];
@ -112,6 +118,10 @@ const CommandHandlers = [CreateOrphanSpaceHandler];
SceneRepository, SceneRepository,
AutomationRepository, AutomationRepository,
SubspaceModelProductAllocationRepoitory, SubspaceModelProductAllocationRepoitory,
PowerClampService,
PowerClampHourlyRepository,
PowerClampDailyRepository,
PowerClampMonthlyRepository,
], ],
exports: [ProjectService, CqrsModule], exports: [ProjectService, CqrsModule],
}) })

View File

@ -58,6 +58,12 @@ import {
} from '@app/common/modules/scene/repositories'; } from '@app/common/modules/scene/repositories';
import { AutomationRepository } from '@app/common/modules/automation/repositories'; import { AutomationRepository } from '@app/common/modules/automation/repositories';
import { CommunityModule } from 'src/community/community.module'; 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 = [ const CommandHandlers = [
PropogateUpdateSpaceModelHandler, PropogateUpdateSpaceModelHandler,
@ -112,6 +118,10 @@ const CommandHandlers = [
SpaceProductAllocationRepository, SpaceProductAllocationRepository,
SubspaceProductAllocationRepository, SubspaceProductAllocationRepository,
SubSpaceService, SubSpaceService,
PowerClampService,
PowerClampHourlyRepository,
PowerClampDailyRepository,
PowerClampMonthlyRepository,
], ],
exports: [CqrsModule, SpaceModelService], exports: [CqrsModule, SpaceModelService],
}) })

View File

@ -83,6 +83,12 @@ import { SubspaceModelProductAllocationService } from 'src/space-model/services/
import { SpaceProductAllocationService } from './services/space-product-allocation.service'; import { SpaceProductAllocationService } from './services/space-product-allocation.service';
import { SubspaceProductAllocationService } from './services/subspace/subspace-product-allocation.service'; import { SubspaceProductAllocationService } from './services/subspace/subspace-product-allocation.service';
import { SpaceValidationController } from './controllers/space-validation.controller'; 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]; export const CommandHandlers = [DisableSpaceHandler];
@ -154,6 +160,10 @@ export const CommandHandlers = [DisableSpaceHandler];
SubspaceProductAllocationService, SubspaceProductAllocationService,
SpaceProductAllocationRepository, SpaceProductAllocationRepository,
SubspaceProductAllocationRepository, SubspaceProductAllocationRepository,
PowerClampHourlyRepository,
PowerClampDailyRepository,
PowerClampMonthlyRepository,
PowerClampService,
], ],
exports: [SpaceService], exports: [SpaceService],
}) })

View File

@ -22,6 +22,12 @@ import {
import { SceneDeviceRepository } from '@app/common/modules/scene-device/repositories'; import { SceneDeviceRepository } from '@app/common/modules/scene-device/repositories';
import { AutomationRepository } from '@app/common/modules/automation/repositories'; import { AutomationRepository } from '@app/common/modules/automation/repositories';
import { ProjectRepository } from '@app/common/modules/project/repositiories'; 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({ @Module({
imports: [ConfigModule, DeviceRepositoryModule, DoorLockModule], imports: [ConfigModule, DeviceRepositoryModule, DoorLockModule],
controllers: [VisitorPasswordController], controllers: [VisitorPasswordController],
@ -43,6 +49,10 @@ import { ProjectRepository } from '@app/common/modules/project/repositiories';
SceneDeviceRepository, SceneDeviceRepository,
AutomationRepository, AutomationRepository,
ProjectRepository, ProjectRepository,
PowerClampService,
PowerClampHourlyRepository,
PowerClampDailyRepository,
PowerClampMonthlyRepository,
], ],
exports: [VisitorPasswordService], exports: [VisitorPasswordService],
}) })