import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // Controller import { AdminController } from '../controllers/admin.controller'; // ORM Entities import { UserOrmEntity } from '@infrastructure/persistence/typeorm/entities/user.orm-entity'; import { OrganizationOrmEntity } from '@infrastructure/persistence/typeorm/entities/organization.orm-entity'; import { CsvBookingOrmEntity } from '@infrastructure/persistence/typeorm/entities/csv-booking.orm-entity'; // Repositories import { TypeOrmUserRepository } from '@infrastructure/persistence/typeorm/repositories/typeorm-user.repository'; import { TypeOrmOrganizationRepository } from '@infrastructure/persistence/typeorm/repositories/typeorm-organization.repository'; import { TypeOrmCsvBookingRepository } from '@infrastructure/persistence/typeorm/repositories/csv-booking.repository'; // Repository tokens import { USER_REPOSITORY } from '@domain/ports/out/user.repository'; import { ORGANIZATION_REPOSITORY } from '@domain/ports/out/organization.repository'; /** * Admin Module * * Provides admin-only endpoints for managing all data in the system. * All endpoints require ADMIN role. */ @Module({ imports: [TypeOrmModule.forFeature([UserOrmEntity, OrganizationOrmEntity, CsvBookingOrmEntity])], controllers: [AdminController], providers: [ { provide: USER_REPOSITORY, useClass: TypeOrmUserRepository, }, { provide: ORGANIZATION_REPOSITORY, useClass: TypeOrmOrganizationRepository, }, TypeOrmCsvBookingRepository, ], }) export class AdminModule {}