app.module.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import { Module } from '@nestjs/common';
  2. import { ConfigModule } from '@nestjs/config';
  3. import { PrismaModule } from './infrastructure/database/prisma.module';
  4. import { ServicesModule } from './infrastructure/services/services.module';
  5. import { UserController } from './presentation/controllers/user.controller';
  6. import { CreateUserUseCase } from './application/use-cases/create-user.use-case';
  7. import { UserRepository } from './infrastructure/database/repositories/user.repository';
  8. import { UpdateUserUseCase } from './application/use-cases/update-user.use-case';
  9. import { CompanyController } from './presentation/controllers/company.controller';
  10. import { CreateCompanyUseCase } from './application/use-cases/company/create-company.use-case';
  11. import { CompanyRepository } from './infrastructure/database/repositories/company.repository';
  12. import { CompanyMapper } from './infrastructure/mappers/company.mapper';
  13. import { FindAllCompaniesUseCase } from './application/use-cases/company/find-all-companies.use-case';
  14. import { DriverController } from './presentation/controllers/driver.controller';
  15. import { PlaceController } from './presentation/controllers/place.controller';
  16. import { VehiculeController } from './presentation/controllers/vehicle.controller';
  17. import { TrajetController } from './presentation/controllers/trajet.controller';
  18. import { VehiculeRepository } from './infrastructure/database/repositories/vehicule.repository';
  19. import { VehiculeMapper } from './infrastructure/mappers/vehicule.mapper';
  20. import { UpdateCompanyUseCase } from './application/use-cases/company/update-company.use-case';
  21. import { UserMapper } from './infrastructure/mappers/user.mapper';
  22. @Module({
  23. imports: [
  24. ConfigModule.forRoot({
  25. isGlobal: true,
  26. }),
  27. PrismaModule,
  28. ServicesModule,
  29. ],
  30. controllers: [
  31. UserController,
  32. CompanyController,
  33. DriverController,
  34. PlaceController,
  35. VehiculeController,
  36. TrajetController,
  37. ],
  38. providers: [
  39. // User related providers
  40. CreateUserUseCase,
  41. UpdateUserUseCase,
  42. UserMapper,
  43. {
  44. provide: 'IUserRepository',
  45. useClass: UserRepository,
  46. },
  47. // Company related providers
  48. CreateCompanyUseCase,
  49. FindAllCompaniesUseCase,
  50. UpdateCompanyUseCase,
  51. CompanyMapper,
  52. {
  53. provide: 'CompanyRepository',
  54. useClass: CompanyRepository,
  55. },
  56. // Vehicule related providers
  57. VehiculeMapper,
  58. {
  59. provide: 'VehiculeRepository',
  60. useClass: VehiculeRepository,
  61. },
  62. ],
  63. })
  64. export class AppModule {}