import { SpaceRepositoryModule } from '@app/common/modules/space/space.repository.module'; import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { SpaceModelController } from './controllers'; import { SpaceModelService, SubSpaceModelService } from './services'; import { SpaceModelProductAllocationRepoitory, SpaceModelRepository, SubspaceModelProductAllocationRepoitory, SubspaceModelRepository, TagModelRepository, } from '@app/common/modules/space-model'; import { ProjectRepository } from '@app/common/modules/project/repositiories'; import { ProductRepository } from '@app/common/modules/product/repositories'; import { PropogateDeleteSpaceModelHandler, PropogateUpdateSpaceModelHandler, } from './handlers'; import { CqrsModule } from '@nestjs/cqrs'; import { InviteSpaceRepository, SpaceLinkRepository, SpaceProductAllocationRepository, SpaceRepository, TagRepository, } from '@app/common/modules/space'; import { SubspaceProductAllocationRepository, SubspaceRepository, } from '@app/common/modules/space/repositories/subspace.repository'; import { SpaceLinkService, SpaceService, SubspaceDeviceService, SubSpaceService, ValidationService, } from 'src/space/services'; import { TagService } from 'src/space/services/tag'; import { CommunityService } from 'src/community/services'; import { DeviceRepository } from '@app/common/modules/device/repositories'; import { TuyaService } from '@app/common/integrations/tuya/services/tuya.service'; import { CommunityRepository } from '@app/common/modules/community/repositories'; import { TagService as NewTagService } from 'src/tags/services/tags.service'; import { NewTagRepository } from '@app/common/modules/tag/repositories/tag-repository'; import { SpaceModelProductAllocationService } from './services/space-model-product-allocation.service'; import { SubspaceModelProductAllocationService } from './services/subspace/subspace-model-product-allocation.service'; import { SpaceProductAllocationService } from 'src/space/services/space-product-allocation.service'; import { SubspaceProductAllocationService } from 'src/space/services/subspace/subspace-product-allocation.service'; import { DeviceService } from 'src/device/services'; import { SceneDeviceRepository } from '@app/common/modules/scene-device/repositories'; import { DeviceStatusFirebaseService } from '@app/common/firebase/devices-status/services/devices-status.service'; import { SceneService } from 'src/scene/services'; import { DeviceStatusLogRepository } from '@app/common/modules/device-status-log/repositories'; import { SceneIconRepository, SceneRepository, } from '@app/common/modules/scene/repositories'; import { AutomationRepository } from '@app/common/modules/automation/repositories'; const CommandHandlers = [ PropogateUpdateSpaceModelHandler, PropogateDeleteSpaceModelHandler, ]; @Module({ imports: [ConfigModule, SpaceRepositoryModule, CqrsModule], controllers: [SpaceModelController], providers: [ ...CommandHandlers, SpaceModelService, SpaceService, SpaceModelRepository, SpaceRepository, ProjectRepository, SubSpaceModelService, SubspaceModelRepository, ProductRepository, SubspaceRepository, TagModelRepository, SubSpaceService, ValidationService, TagService, SubspaceDeviceService, CommunityService, TagRepository, DeviceRepository, TuyaService, CommunityRepository, SpaceLinkService, SpaceLinkRepository, InviteSpaceRepository, NewTagService, DeviceService, DeviceStatusFirebaseService, DeviceStatusLogRepository, SceneService, SceneIconRepository, SceneDeviceRepository, SceneRepository, AutomationRepository, SpaceModelProductAllocationRepoitory, SubspaceModelProductAllocationRepoitory, NewTagRepository, SpaceModelProductAllocationService, SubspaceModelProductAllocationRepoitory, SubspaceModelProductAllocationService, SpaceProductAllocationService, SubspaceProductAllocationService, SpaceProductAllocationRepository, SubspaceProductAllocationRepository, SubSpaceService, ], exports: [CqrsModule, SpaceModelService], }) export class SpaceModelModule {}