import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { UsersController } from '../controllers/users.controller'; // Import domain ports import { USER_REPOSITORY } from '@domain/ports/out/user.repository'; import { TypeOrmUserRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-user.repository'; import { UserOrmEntity } from '../../infrastructure/persistence/typeorm/entities/user.orm-entity'; import { SubscriptionsModule } from '../subscriptions/subscriptions.module'; import { FeatureFlagGuard } from '../guards/feature-flag.guard'; import { GDPRModule } from '../gdpr/gdpr.module'; import { EmailModule } from '../../infrastructure/email/email.module'; import { ORGANIZATION_REPOSITORY } from '@domain/ports/out/organization.repository'; import { OrganizationOrmEntity } from '../../infrastructure/persistence/typeorm/entities/organization.orm-entity'; import { TypeOrmOrganizationRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-organization.repository'; @Module({ imports: [ TypeOrmModule.forFeature([UserOrmEntity, OrganizationOrmEntity]), SubscriptionsModule, GDPRModule, // Email d'accès envoyé au compte créé par un administrateur EmailModule, ], controllers: [UsersController], providers: [ FeatureFlagGuard, { provide: USER_REPOSITORY, useClass: TypeOrmUserRepository, }, { provide: ORGANIZATION_REPOSITORY, useClass: TypeOrmOrganizationRepository, }, ], exports: [ USER_REPOSITORY, // optional, export if other modules need it ], }) export class UsersModule {}