import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { PrismaModule } from './infrastructure/database/prisma.module'; import { ServicesModule } from './infrastructure/services/services.module'; import { UserController } from './presentation/controllers/user.controller'; import { CreateUserUseCase } from './application/use-cases/create-user.use-case'; import { UserRepository } from './infrastructure/database/repositories/user.repository'; import { UpdateUserUseCase } from './application/use-cases/update-user.use-case'; import { CompanyController } from './presentation/controllers/company.controller'; import { CreateCompanyUseCase } from './application/use-cases/company/create-company.use-case'; import { CompanyRepository } from './infrastructure/database/repositories/company.repository'; import { CompanyMapper } from './infrastructure/mappers/company.mapper'; import { FindAllCompaniesUseCase } from './application/use-cases/company/find-all-companies.use-case'; import { DriverController } from './presentation/controllers/driver.controller'; import { PlaceController } from './presentation/controllers/place.controller'; import { VehiculeController } from './presentation/controllers/vehicle.controller'; import { TrajetController } from './presentation/controllers/trajet.controller'; import { VehiculeRepository } from './infrastructure/database/repositories/vehicule.repository'; import { VehiculeMapper } from './infrastructure/mappers/vehicule.mapper'; import { UpdateCompanyUseCase } from './application/use-cases/company/update-company.use-case'; import { UserMapper } from './infrastructure/mappers/user.mapper'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, }), PrismaModule, ServicesModule, ], controllers: [ UserController, CompanyController, DriverController, PlaceController, VehiculeController, TrajetController, ], providers: [ // User related providers CreateUserUseCase, UpdateUserUseCase, UserMapper, { provide: 'IUserRepository', useClass: UserRepository, }, // Company related providers CreateCompanyUseCase, FindAllCompaniesUseCase, UpdateCompanyUseCase, CompanyMapper, { provide: 'CompanyRepository', useClass: CompanyRepository, }, // Vehicule related providers VehiculeMapper, { provide: 'VehiculeRepository', useClass: VehiculeRepository, }, ], }) export class AppModule {}