xpeditis2.0/apps/backend/src/infrastructure/carriers/carrier.module.ts
2025-10-27 20:54:01 +01:00

70 lines
1.8 KiB
TypeScript

/**
* Carrier Module
*
* Provides all carrier connector implementations
*/
import { Module } from '@nestjs/common';
import { MaerskConnector } from './maersk/maersk.connector';
import { MSCConnectorAdapter } from './msc/msc.connector';
import { MSCRequestMapper } from './msc/msc.mapper';
import { CMACGMConnectorAdapter } from './cma-cgm/cma-cgm.connector';
import { CMACGMRequestMapper } from './cma-cgm/cma-cgm.mapper';
import { HapagLloydConnectorAdapter } from './hapag-lloyd/hapag-lloyd.connector';
import { HapagLloydRequestMapper } from './hapag-lloyd/hapag-lloyd.mapper';
import { ONEConnectorAdapter } from './one/one.connector';
import { ONERequestMapper } from './one/one.mapper';
@Module({
providers: [
// Maersk
MaerskConnector,
// MSC
MSCRequestMapper,
MSCConnectorAdapter,
// CMA CGM
CMACGMRequestMapper,
CMACGMConnectorAdapter,
// Hapag-Lloyd
HapagLloydRequestMapper,
HapagLloydConnectorAdapter,
// ONE
ONERequestMapper,
ONEConnectorAdapter,
// Factory that provides all connectors
{
provide: 'CarrierConnectors',
useFactory: (
maerskConnector: MaerskConnector,
mscConnector: MSCConnectorAdapter,
cmacgmConnector: CMACGMConnectorAdapter,
hapagConnector: HapagLloydConnectorAdapter,
oneConnector: ONEConnectorAdapter
) => {
return [maerskConnector, mscConnector, cmacgmConnector, hapagConnector, oneConnector];
},
inject: [
MaerskConnector,
MSCConnectorAdapter,
CMACGMConnectorAdapter,
HapagLloydConnectorAdapter,
ONEConnectorAdapter,
],
},
],
exports: [
'CarrierConnectors',
MaerskConnector,
MSCConnectorAdapter,
CMACGMConnectorAdapter,
HapagLloydConnectorAdapter,
ONEConnectorAdapter,
],
})
export class CarrierModule {}