fix: replace relative domain imports with TypeScript path aliases
Some checks failed
CI/CD Pipeline - Xpeditis PreProd / Frontend - Docker Build & Push (push) Blocked by required conditions
CI/CD Pipeline - Xpeditis PreProd / Deploy to PreProd Server (push) Blocked by required conditions
CI/CD Pipeline - Xpeditis PreProd / Run Smoke Tests (push) Blocked by required conditions
CI/CD Pipeline - Xpeditis PreProd / Backend - Build & Test (push) Failing after 5m53s
CI/CD Pipeline - Xpeditis PreProd / Backend - Docker Build & Push (push) Has been skipped
CI/CD Pipeline - Xpeditis PreProd / Frontend - Build & Test (push) Has been cancelled
Some checks failed
CI/CD Pipeline - Xpeditis PreProd / Frontend - Docker Build & Push (push) Blocked by required conditions
CI/CD Pipeline - Xpeditis PreProd / Deploy to PreProd Server (push) Blocked by required conditions
CI/CD Pipeline - Xpeditis PreProd / Run Smoke Tests (push) Blocked by required conditions
CI/CD Pipeline - Xpeditis PreProd / Backend - Build & Test (push) Failing after 5m53s
CI/CD Pipeline - Xpeditis PreProd / Backend - Docker Build & Push (push) Has been skipped
CI/CD Pipeline - Xpeditis PreProd / Frontend - Build & Test (push) Has been cancelled
- Replace all ../../domain/ imports with @domain/ across 67 files - Configure NestJS to use tsconfig.build.json with rootDir - Add tsc-alias to resolve path aliases after build - This fixes 'Cannot find module' TypeScript compilation errors Fixed files: - 30 files in application layer - 37 files in infrastructure layer
This commit is contained in:
parent
b6f6b05a08
commit
4b00ee2601
65
apps/backend/fix-imports.js
Normal file
65
apps/backend/fix-imports.js
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Script to fix TypeScript imports from relative paths to path aliases
|
||||||
|
*
|
||||||
|
* Replaces:
|
||||||
|
* - from '../../domain/...' → from '@domain/...'
|
||||||
|
* - from '../../../domain/...' → from '@domain/...'
|
||||||
|
* - from '../domain/...' → from '@domain/...'
|
||||||
|
* - from '../../../../domain/...' → from '@domain/...'
|
||||||
|
*/
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
function fixImportsInFile(filePath) {
|
||||||
|
const content = fs.readFileSync(filePath, 'utf8');
|
||||||
|
let modified = content;
|
||||||
|
|
||||||
|
// Replace all variations of relative domain imports with @domain alias
|
||||||
|
modified = modified.replace(/from ['"]\.\.\/\.\.\/\.\.\/\.\.\/domain\//g, "from '@domain/");
|
||||||
|
modified = modified.replace(/from ['"]\.\.\/\.\.\/\.\.\/domain\//g, "from '@domain/");
|
||||||
|
modified = modified.replace(/from ['"]\.\.\/\.\.\/domain\//g, "from '@domain/");
|
||||||
|
modified = modified.replace(/from ['"]\.\.\/domain\//g, "from '@domain/");
|
||||||
|
|
||||||
|
// Also fix import statements (not just from)
|
||||||
|
modified = modified.replace(/import\s+(['"])\.\.\/\.\.\/\.\.\/\.\.\/domain\//g, "import $1@domain/");
|
||||||
|
modified = modified.replace(/import\s+(['"])\.\.\/\.\.\/\.\.\/domain\//g, "import $1@domain/");
|
||||||
|
modified = modified.replace(/import\s+(['"])\.\.\/\.\.\/domain\//g, "import $1@domain/");
|
||||||
|
modified = modified.replace(/import\s+(['"])\.\.\/domain\//g, "import $1@domain/");
|
||||||
|
|
||||||
|
if (modified !== content) {
|
||||||
|
fs.writeFileSync(filePath, modified, 'utf8');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function walkDir(dir) {
|
||||||
|
const files = fs.readdirSync(dir);
|
||||||
|
let count = 0;
|
||||||
|
|
||||||
|
for (const file of files) {
|
||||||
|
const filePath = path.join(dir, file);
|
||||||
|
const stat = fs.statSync(filePath);
|
||||||
|
|
||||||
|
if (stat.isDirectory()) {
|
||||||
|
count += walkDir(filePath);
|
||||||
|
} else if (file.endsWith('.ts')) {
|
||||||
|
if (fixImportsInFile(filePath)) {
|
||||||
|
console.log(`✅ Fixed: ${filePath}`);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
const srcDir = path.join(__dirname, 'src');
|
||||||
|
console.log('🔧 Fixing TypeScript imports...\n');
|
||||||
|
|
||||||
|
const count = walkDir(srcDir);
|
||||||
|
|
||||||
|
console.log(`\n✅ Fixed ${count} files`);
|
||||||
@ -10,7 +10,7 @@ import { AuditController } from '../controllers/audit.controller';
|
|||||||
import { AuditService } from '../services/audit.service';
|
import { AuditService } from '../services/audit.service';
|
||||||
import { AuditLogOrmEntity } from '../../infrastructure/persistence/typeorm/entities/audit-log.orm-entity';
|
import { AuditLogOrmEntity } from '../../infrastructure/persistence/typeorm/entities/audit-log.orm-entity';
|
||||||
import { TypeOrmAuditLogRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-audit-log.repository';
|
import { TypeOrmAuditLogRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-audit-log.repository';
|
||||||
import { AUDIT_LOG_REPOSITORY } from '../../domain/ports/out/audit-log.repository';
|
import { AUDIT_LOG_REPOSITORY } from '@domain/ports/out/audit-log.repository';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [TypeOrmModule.forFeature([AuditLogOrmEntity])],
|
imports: [TypeOrmModule.forFeature([AuditLogOrmEntity])],
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import { JwtStrategy } from './jwt.strategy';
|
|||||||
import { AuthController } from '../controllers/auth.controller';
|
import { AuthController } from '../controllers/auth.controller';
|
||||||
|
|
||||||
// Import domain and infrastructure dependencies
|
// Import domain and infrastructure dependencies
|
||||||
import { USER_REPOSITORY } from '../../domain/ports/out/user.repository';
|
import { USER_REPOSITORY } from '@domain/ports/out/user.repository';
|
||||||
import { TypeOrmUserRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-user.repository';
|
import { TypeOrmUserRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-user.repository';
|
||||||
import { UserOrmEntity } from '../../infrastructure/persistence/typeorm/entities/user.orm-entity';
|
import { UserOrmEntity } from '../../infrastructure/persistence/typeorm/entities/user.orm-entity';
|
||||||
|
|
||||||
|
|||||||
@ -8,8 +8,8 @@ import {
|
|||||||
import { JwtService } from '@nestjs/jwt';
|
import { JwtService } from '@nestjs/jwt';
|
||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import * as argon2 from 'argon2';
|
import * as argon2 from 'argon2';
|
||||||
import { UserRepository, USER_REPOSITORY } from '../../domain/ports/out/user.repository';
|
import { UserRepository, USER_REPOSITORY } from '@domain/ports/out/user.repository';
|
||||||
import { User, UserRole } from '../../domain/entities/user.entity';
|
import { User, UserRole } from '@domain/entities/user.entity';
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
export interface JwtPayload {
|
export interface JwtPayload {
|
||||||
|
|||||||
@ -3,9 +3,9 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
|||||||
import { BookingsController } from '../controllers/bookings.controller';
|
import { BookingsController } from '../controllers/bookings.controller';
|
||||||
|
|
||||||
// Import domain ports
|
// Import domain ports
|
||||||
import { BOOKING_REPOSITORY } from '../../domain/ports/out/booking.repository';
|
import { BOOKING_REPOSITORY } from '@domain/ports/out/booking.repository';
|
||||||
import { RATE_QUOTE_REPOSITORY } from '../../domain/ports/out/rate-quote.repository';
|
import { RATE_QUOTE_REPOSITORY } from '@domain/ports/out/rate-quote.repository';
|
||||||
import { USER_REPOSITORY } from '../../domain/ports/out/user.repository';
|
import { USER_REPOSITORY } from '@domain/ports/out/user.repository';
|
||||||
import { TypeOrmBookingRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-booking.repository';
|
import { TypeOrmBookingRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-booking.repository';
|
||||||
import { TypeOrmRateQuoteRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-rate-quote.repository';
|
import { TypeOrmRateQuoteRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-rate-quote.repository';
|
||||||
import { TypeOrmUserRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-user.repository';
|
import { TypeOrmUserRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-user.repository';
|
||||||
@ -17,7 +17,7 @@ import { RateQuoteOrmEntity } from '../../infrastructure/persistence/typeorm/ent
|
|||||||
import { UserOrmEntity } from '../../infrastructure/persistence/typeorm/entities/user.orm-entity';
|
import { UserOrmEntity } from '../../infrastructure/persistence/typeorm/entities/user.orm-entity';
|
||||||
|
|
||||||
// Import services and domain
|
// Import services and domain
|
||||||
import { BookingService } from '../../domain/services/booking.service';
|
import { BookingService } from '@domain/services/booking.service';
|
||||||
import { BookingAutomationService } from '../services/booking-automation.service';
|
import { BookingAutomationService } from '../services/booking-automation.service';
|
||||||
import { ExportService } from '../services/export.service';
|
import { ExportService } from '../services/export.service';
|
||||||
import { FuzzySearchService } from '../services/fuzzy-search.service';
|
import { FuzzySearchService } from '../services/fuzzy-search.service';
|
||||||
|
|||||||
@ -19,7 +19,7 @@ import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
|||||||
import { RolesGuard } from '../guards/roles.guard';
|
import { RolesGuard } from '../guards/roles.guard';
|
||||||
import { Roles } from '../decorators/roles.decorator';
|
import { Roles } from '../decorators/roles.decorator';
|
||||||
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
||||||
import { AuditLog, AuditAction, AuditStatus } from '../../domain/entities/audit-log.entity';
|
import { AuditLog, AuditAction, AuditStatus } from '@domain/entities/audit-log.entity';
|
||||||
|
|
||||||
class AuditLogResponseDto {
|
class AuditLogResponseDto {
|
||||||
id: string;
|
id: string;
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import { LoginDto, RegisterDto, AuthResponseDto, RefreshTokenDto } from '../dto/
|
|||||||
import { Public } from '../decorators/public.decorator';
|
import { Public } from '../decorators/public.decorator';
|
||||||
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
||||||
import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
||||||
import { UserRepository, USER_REPOSITORY } from '../../domain/ports/out/user.repository';
|
import { UserRepository, USER_REPOSITORY } from '@domain/ports/out/user.repository';
|
||||||
import { UserMapper } from '../mappers/user.mapper';
|
import { UserMapper } from '../mappers/user.mapper';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -36,23 +36,23 @@ import { CreateBookingRequestDto, BookingResponseDto, BookingListResponseDto } f
|
|||||||
import { BookingFilterDto } from '../dto/booking-filter.dto';
|
import { BookingFilterDto } from '../dto/booking-filter.dto';
|
||||||
import { BookingExportDto, ExportFormat } from '../dto/booking-export.dto';
|
import { BookingExportDto, ExportFormat } from '../dto/booking-export.dto';
|
||||||
import { BookingMapper } from '../mappers';
|
import { BookingMapper } from '../mappers';
|
||||||
import { BookingService } from '../../domain/services/booking.service';
|
import { BookingService } from '@domain/services/booking.service';
|
||||||
import { BookingRepository, BOOKING_REPOSITORY } from '../../domain/ports/out/booking.repository';
|
import { BookingRepository, BOOKING_REPOSITORY } from '@domain/ports/out/booking.repository';
|
||||||
import {
|
import {
|
||||||
RateQuoteRepository,
|
RateQuoteRepository,
|
||||||
RATE_QUOTE_REPOSITORY,
|
RATE_QUOTE_REPOSITORY,
|
||||||
} from '../../domain/ports/out/rate-quote.repository';
|
} from '@domain/ports/out/rate-quote.repository';
|
||||||
import { BookingNumber } from '../../domain/value-objects/booking-number.vo';
|
import { BookingNumber } from '@domain/value-objects/booking-number.vo';
|
||||||
import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
||||||
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
||||||
import { ExportService } from '../services/export.service';
|
import { ExportService } from '../services/export.service';
|
||||||
import { FuzzySearchService } from '../services/fuzzy-search.service';
|
import { FuzzySearchService } from '../services/fuzzy-search.service';
|
||||||
import { AuditService } from '../services/audit.service';
|
import { AuditService } from '../services/audit.service';
|
||||||
import { AuditAction, AuditStatus } from '../../domain/entities/audit-log.entity';
|
import { AuditAction, AuditStatus } from '@domain/entities/audit-log.entity';
|
||||||
import { NotificationService } from '../services/notification.service';
|
import { NotificationService } from '../services/notification.service';
|
||||||
import { NotificationsGateway } from '../gateways/notifications.gateway';
|
import { NotificationsGateway } from '../gateways/notifications.gateway';
|
||||||
import { WebhookService } from '../services/webhook.service';
|
import { WebhookService } from '../services/webhook.service';
|
||||||
import { WebhookEvent } from '../../domain/entities/webhook.entity';
|
import { WebhookEvent } from '@domain/entities/webhook.entity';
|
||||||
|
|
||||||
@ApiTags('Bookings')
|
@ApiTags('Bookings')
|
||||||
@Controller('bookings')
|
@Controller('bookings')
|
||||||
|
|||||||
@ -21,7 +21,7 @@ import { ApiTags, ApiOperation, ApiResponse, ApiBearerAuth, ApiQuery } from '@ne
|
|||||||
import { NotificationService } from '../services/notification.service';
|
import { NotificationService } from '../services/notification.service';
|
||||||
import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
||||||
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
||||||
import { Notification } from '../../domain/entities/notification.entity';
|
import { Notification } from '@domain/entities/notification.entity';
|
||||||
|
|
||||||
class NotificationResponseDto {
|
class NotificationResponseDto {
|
||||||
id: string;
|
id: string;
|
||||||
|
|||||||
@ -39,8 +39,8 @@ import { OrganizationMapper } from '../mappers/organization.mapper';
|
|||||||
import {
|
import {
|
||||||
OrganizationRepository,
|
OrganizationRepository,
|
||||||
ORGANIZATION_REPOSITORY,
|
ORGANIZATION_REPOSITORY,
|
||||||
} from '../../domain/ports/out/organization.repository';
|
} from '@domain/ports/out/organization.repository';
|
||||||
import { Organization, OrganizationType } from '../../domain/entities/organization.entity';
|
import { Organization, OrganizationType } from '@domain/entities/organization.entity';
|
||||||
import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
||||||
import { RolesGuard } from '../guards/roles.guard';
|
import { RolesGuard } from '../guards/roles.guard';
|
||||||
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
||||||
|
|||||||
@ -20,8 +20,8 @@ import {
|
|||||||
} from '@nestjs/swagger';
|
} from '@nestjs/swagger';
|
||||||
import { RateSearchRequestDto, RateSearchResponseDto } from '../dto';
|
import { RateSearchRequestDto, RateSearchResponseDto } from '../dto';
|
||||||
import { RateQuoteMapper } from '../mappers';
|
import { RateQuoteMapper } from '../mappers';
|
||||||
import { RateSearchService } from '../../domain/services/rate-search.service';
|
import { RateSearchService } from '@domain/services/rate-search.service';
|
||||||
import { CsvRateSearchService } from '../../domain/services/csv-rate-search.service';
|
import { CsvRateSearchService } from '@domain/services/csv-rate-search.service';
|
||||||
import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
||||||
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
||||||
import { CsvRateSearchDto, CsvRateSearchResponseDto } from '../dto/csv-rate-search.dto';
|
import { CsvRateSearchDto, CsvRateSearchResponseDto } from '../dto/csv-rate-search.dto';
|
||||||
|
|||||||
@ -39,8 +39,8 @@ import {
|
|||||||
UserListResponseDto,
|
UserListResponseDto,
|
||||||
} from '../dto/user.dto';
|
} from '../dto/user.dto';
|
||||||
import { UserMapper } from '../mappers/user.mapper';
|
import { UserMapper } from '../mappers/user.mapper';
|
||||||
import { UserRepository, USER_REPOSITORY } from '../../domain/ports/out/user.repository';
|
import { UserRepository, USER_REPOSITORY } from '@domain/ports/out/user.repository';
|
||||||
import { User, UserRole as DomainUserRole } from '../../domain/entities/user.entity';
|
import { User, UserRole as DomainUserRole } from '@domain/entities/user.entity';
|
||||||
import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
||||||
import { RolesGuard } from '../guards/roles.guard';
|
import { RolesGuard } from '../guards/roles.guard';
|
||||||
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
||||||
|
|||||||
@ -26,7 +26,7 @@ import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
|||||||
import { RolesGuard } from '../guards/roles.guard';
|
import { RolesGuard } from '../guards/roles.guard';
|
||||||
import { Roles } from '../decorators/roles.decorator';
|
import { Roles } from '../decorators/roles.decorator';
|
||||||
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
||||||
import { Webhook, WebhookEvent } from '../../domain/entities/webhook.entity';
|
import { Webhook, WebhookEvent } from '@domain/entities/webhook.entity';
|
||||||
|
|
||||||
class CreateWebhookDto {
|
class CreateWebhookDto {
|
||||||
url: string;
|
url: string;
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import {
|
|||||||
IsUUID,
|
IsUUID,
|
||||||
} from 'class-validator';
|
} from 'class-validator';
|
||||||
import { Type } from 'class-transformer';
|
import { Type } from 'class-transformer';
|
||||||
import { OrganizationType } from '../../domain/entities/organization.entity';
|
import { OrganizationType } from '@domain/entities/organization.entity';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Address DTO
|
* Address DTO
|
||||||
|
|||||||
@ -17,7 +17,7 @@ import { Server, Socket } from 'socket.io';
|
|||||||
import { Logger, UseGuards } from '@nestjs/common';
|
import { Logger, UseGuards } from '@nestjs/common';
|
||||||
import { JwtService } from '@nestjs/jwt';
|
import { JwtService } from '@nestjs/jwt';
|
||||||
import { NotificationService } from '../services/notification.service';
|
import { NotificationService } from '../services/notification.service';
|
||||||
import { Notification } from '../../domain/entities/notification.entity';
|
import { Notification } from '@domain/entities/notification.entity';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WebSocket authentication guard
|
* WebSocket authentication guard
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import { Booking } from '../../domain/entities/booking.entity';
|
import { Booking } from '@domain/entities/booking.entity';
|
||||||
import { RateQuote } from '../../domain/entities/rate-quote.entity';
|
import { RateQuote } from '@domain/entities/rate-quote.entity';
|
||||||
import {
|
import {
|
||||||
BookingResponseDto,
|
BookingResponseDto,
|
||||||
BookingAddressDto,
|
BookingAddressDto,
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import {
|
|||||||
Organization,
|
Organization,
|
||||||
OrganizationAddress,
|
OrganizationAddress,
|
||||||
OrganizationDocument,
|
OrganizationDocument,
|
||||||
} from '../../domain/entities/organization.entity';
|
} from '@domain/entities/organization.entity';
|
||||||
import {
|
import {
|
||||||
OrganizationResponseDto,
|
OrganizationResponseDto,
|
||||||
OrganizationDocumentDto,
|
OrganizationDocumentDto,
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { RateQuote } from '../../domain/entities/rate-quote.entity';
|
import { RateQuote } from '@domain/entities/rate-quote.entity';
|
||||||
import {
|
import {
|
||||||
RateQuoteDto,
|
RateQuoteDto,
|
||||||
PortDto,
|
PortDto,
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { User } from '../../domain/entities/user.entity';
|
import { User } from '@domain/entities/user.entity';
|
||||||
import { UserResponseDto } from '../dto/user.dto';
|
import { UserResponseDto } from '../dto/user.dto';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import { NotificationsGateway } from '../gateways/notifications.gateway';
|
|||||||
import { NotificationService } from '../services/notification.service';
|
import { NotificationService } from '../services/notification.service';
|
||||||
import { NotificationOrmEntity } from '../../infrastructure/persistence/typeorm/entities/notification.orm-entity';
|
import { NotificationOrmEntity } from '../../infrastructure/persistence/typeorm/entities/notification.orm-entity';
|
||||||
import { TypeOrmNotificationRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-notification.repository';
|
import { TypeOrmNotificationRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-notification.repository';
|
||||||
import { NOTIFICATION_REPOSITORY } from '../../domain/ports/out/notification.repository';
|
import { NOTIFICATION_REPOSITORY } from '@domain/ports/out/notification.repository';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
|||||||
import { OrganizationsController } from '../controllers/organizations.controller';
|
import { OrganizationsController } from '../controllers/organizations.controller';
|
||||||
|
|
||||||
// Import domain ports
|
// Import domain ports
|
||||||
import { ORGANIZATION_REPOSITORY } from '../../domain/ports/out/organization.repository';
|
import { ORGANIZATION_REPOSITORY } from '@domain/ports/out/organization.repository';
|
||||||
import { TypeOrmOrganizationRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-organization.repository';
|
import { TypeOrmOrganizationRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-organization.repository';
|
||||||
import { OrganizationOrmEntity } from '../../infrastructure/persistence/typeorm/entities/organization.orm-entity';
|
import { OrganizationOrmEntity } from '../../infrastructure/persistence/typeorm/entities/organization.orm-entity';
|
||||||
|
|
||||||
|
|||||||
@ -6,13 +6,13 @@ import { CarrierModule } from '../../infrastructure/carriers/carrier.module';
|
|||||||
import { CsvRateModule } from '../../infrastructure/carriers/csv-loader/csv-rate.module';
|
import { CsvRateModule } from '../../infrastructure/carriers/csv-loader/csv-rate.module';
|
||||||
|
|
||||||
// Import domain services
|
// Import domain services
|
||||||
import { RateSearchService } from '../../domain/services/rate-search.service';
|
import { RateSearchService } from '@domain/services/rate-search.service';
|
||||||
|
|
||||||
// Import domain ports
|
// Import domain ports
|
||||||
import { RATE_QUOTE_REPOSITORY } from '../../domain/ports/out/rate-quote.repository';
|
import { RATE_QUOTE_REPOSITORY } from '@domain/ports/out/rate-quote.repository';
|
||||||
import { PORT_REPOSITORY } from '../../domain/ports/out/port.repository';
|
import { PORT_REPOSITORY } from '@domain/ports/out/port.repository';
|
||||||
import { CARRIER_REPOSITORY } from '../../domain/ports/out/carrier.repository';
|
import { CARRIER_REPOSITORY } from '@domain/ports/out/carrier.repository';
|
||||||
import { CACHE_PORT } from '../../domain/ports/out/cache.port';
|
import { CACHE_PORT } from '@domain/ports/out/cache.port';
|
||||||
|
|
||||||
// Import infrastructure implementations
|
// Import infrastructure implementations
|
||||||
import { TypeOrmRateQuoteRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-rate-quote.repository';
|
import { TypeOrmRateQuoteRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-rate-quote.repository';
|
||||||
|
|||||||
@ -5,10 +5,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Injectable, Inject } from '@nestjs/common';
|
import { Injectable, Inject } from '@nestjs/common';
|
||||||
import { BOOKING_REPOSITORY } from '../../domain/ports/out/booking.repository';
|
import { BOOKING_REPOSITORY } from '@domain/ports/out/booking.repository';
|
||||||
import { BookingRepository } from '../../domain/ports/out/booking.repository';
|
import { BookingRepository } from '@domain/ports/out/booking.repository';
|
||||||
import { RATE_QUOTE_REPOSITORY } from '../../domain/ports/out/rate-quote.repository';
|
import { RATE_QUOTE_REPOSITORY } from '@domain/ports/out/rate-quote.repository';
|
||||||
import { RateQuoteRepository } from '../../domain/ports/out/rate-quote.repository';
|
import { RateQuoteRepository } from '@domain/ports/out/rate-quote.repository';
|
||||||
|
|
||||||
export interface DashboardKPIs {
|
export interface DashboardKPIs {
|
||||||
bookingsThisMonth: number;
|
bookingsThisMonth: number;
|
||||||
|
|||||||
@ -7,12 +7,12 @@
|
|||||||
|
|
||||||
import { Injectable, Logger, Inject } from '@nestjs/common';
|
import { Injectable, Logger, Inject } from '@nestjs/common';
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
import { AuditLog, AuditAction, AuditStatus } from '../../domain/entities/audit-log.entity';
|
import { AuditLog, AuditAction, AuditStatus } from '@domain/entities/audit-log.entity';
|
||||||
import {
|
import {
|
||||||
AuditLogRepository,
|
AuditLogRepository,
|
||||||
AUDIT_LOG_REPOSITORY,
|
AUDIT_LOG_REPOSITORY,
|
||||||
AuditLogFilters,
|
AuditLogFilters,
|
||||||
} from '../../domain/ports/out/audit-log.repository';
|
} from '@domain/ports/out/audit-log.repository';
|
||||||
|
|
||||||
export interface LogAuditInput {
|
export interface LogAuditInput {
|
||||||
action: AuditAction;
|
action: AuditAction;
|
||||||
|
|||||||
@ -5,15 +5,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Injectable, Logger, Inject } from '@nestjs/common';
|
import { Injectable, Logger, Inject } from '@nestjs/common';
|
||||||
import { Booking } from '../../domain/entities/booking.entity';
|
import { Booking } from '@domain/entities/booking.entity';
|
||||||
import { EmailPort, EMAIL_PORT } from '../../domain/ports/out/email.port';
|
import { EmailPort, EMAIL_PORT } from '@domain/ports/out/email.port';
|
||||||
import { PdfPort, PDF_PORT, BookingPdfData } from '../../domain/ports/out/pdf.port';
|
import { PdfPort, PDF_PORT, BookingPdfData } from '@domain/ports/out/pdf.port';
|
||||||
import { StoragePort, STORAGE_PORT } from '../../domain/ports/out/storage.port';
|
import { StoragePort, STORAGE_PORT } from '@domain/ports/out/storage.port';
|
||||||
import { UserRepository, USER_REPOSITORY } from '../../domain/ports/out/user.repository';
|
import { UserRepository, USER_REPOSITORY } from '@domain/ports/out/user.repository';
|
||||||
import {
|
import {
|
||||||
RateQuoteRepository,
|
RateQuoteRepository,
|
||||||
RATE_QUOTE_REPOSITORY,
|
RATE_QUOTE_REPOSITORY,
|
||||||
} from '../../domain/ports/out/rate-quote.repository';
|
} from '@domain/ports/out/rate-quote.repository';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class BookingAutomationService {
|
export class BookingAutomationService {
|
||||||
|
|||||||
@ -4,20 +4,20 @@ import {
|
|||||||
CsvBooking,
|
CsvBooking,
|
||||||
CsvBookingStatus,
|
CsvBookingStatus,
|
||||||
DocumentType,
|
DocumentType,
|
||||||
} from '../../domain/entities/csv-booking.entity';
|
} from '@domain/entities/csv-booking.entity';
|
||||||
import { PortCode } from '../../domain/value-objects/port-code.vo';
|
import { PortCode } from '@domain/value-objects/port-code.vo';
|
||||||
import { TypeOrmCsvBookingRepository } from '../../infrastructure/persistence/typeorm/repositories/csv-booking.repository';
|
import { TypeOrmCsvBookingRepository } from '../../infrastructure/persistence/typeorm/repositories/csv-booking.repository';
|
||||||
import {
|
import {
|
||||||
NotificationRepository,
|
NotificationRepository,
|
||||||
NOTIFICATION_REPOSITORY,
|
NOTIFICATION_REPOSITORY,
|
||||||
} from '../../domain/ports/out/notification.repository';
|
} from '@domain/ports/out/notification.repository';
|
||||||
import { EmailPort, EMAIL_PORT } from '../../domain/ports/out/email.port';
|
import { EmailPort, EMAIL_PORT } from '@domain/ports/out/email.port';
|
||||||
import { StoragePort, STORAGE_PORT } from '../../domain/ports/out/storage.port';
|
import { StoragePort, STORAGE_PORT } from '@domain/ports/out/storage.port';
|
||||||
import {
|
import {
|
||||||
Notification,
|
Notification,
|
||||||
NotificationType,
|
NotificationType,
|
||||||
NotificationPriority,
|
NotificationPriority,
|
||||||
} from '../../domain/entities/notification.entity';
|
} from '@domain/entities/notification.entity';
|
||||||
import {
|
import {
|
||||||
CreateCsvBookingDto,
|
CreateCsvBookingDto,
|
||||||
CsvBookingResponseDto,
|
CsvBookingResponseDto,
|
||||||
|
|||||||
@ -5,8 +5,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import { Booking } from '../../domain/entities/booking.entity';
|
import { Booking } from '@domain/entities/booking.entity';
|
||||||
import { RateQuote } from '../../domain/entities/rate-quote.entity';
|
import { RateQuote } from '@domain/entities/rate-quote.entity';
|
||||||
import { ExportFormat, ExportField } from '../dto/booking-export.dto';
|
import { ExportFormat, ExportField } from '../dto/booking-export.dto';
|
||||||
import * as ExcelJS from 'exceljs';
|
import * as ExcelJS from 'exceljs';
|
||||||
|
|
||||||
|
|||||||
@ -10,12 +10,12 @@ import {
|
|||||||
Notification,
|
Notification,
|
||||||
NotificationType,
|
NotificationType,
|
||||||
NotificationPriority,
|
NotificationPriority,
|
||||||
} from '../../domain/entities/notification.entity';
|
} from '@domain/entities/notification.entity';
|
||||||
import {
|
import {
|
||||||
NotificationRepository,
|
NotificationRepository,
|
||||||
NOTIFICATION_REPOSITORY,
|
NOTIFICATION_REPOSITORY,
|
||||||
NotificationFilters,
|
NotificationFilters,
|
||||||
} from '../../domain/ports/out/notification.repository';
|
} from '@domain/ports/out/notification.repository';
|
||||||
|
|
||||||
export interface CreateNotificationInput {
|
export interface CreateNotificationInput {
|
||||||
userId: string;
|
userId: string;
|
||||||
|
|||||||
@ -9,12 +9,12 @@ import { HttpService } from '@nestjs/axios';
|
|||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
import * as crypto from 'crypto';
|
import * as crypto from 'crypto';
|
||||||
import { firstValueFrom } from 'rxjs';
|
import { firstValueFrom } from 'rxjs';
|
||||||
import { Webhook, WebhookEvent, WebhookStatus } from '../../domain/entities/webhook.entity';
|
import { Webhook, WebhookEvent, WebhookStatus } from '@domain/entities/webhook.entity';
|
||||||
import {
|
import {
|
||||||
WebhookRepository,
|
WebhookRepository,
|
||||||
WEBHOOK_REPOSITORY,
|
WEBHOOK_REPOSITORY,
|
||||||
WebhookFilters,
|
WebhookFilters,
|
||||||
} from '../../domain/ports/out/webhook.repository';
|
} from '@domain/ports/out/webhook.repository';
|
||||||
|
|
||||||
export interface CreateWebhookInput {
|
export interface CreateWebhookInput {
|
||||||
organizationId: string;
|
organizationId: string;
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { TypeOrmModule } from '@nestjs/typeorm';
|
|||||||
import { UsersController } from '../controllers/users.controller';
|
import { UsersController } from '../controllers/users.controller';
|
||||||
|
|
||||||
// Import domain ports
|
// Import domain ports
|
||||||
import { USER_REPOSITORY } from '../../domain/ports/out/user.repository';
|
import { USER_REPOSITORY } from '@domain/ports/out/user.repository';
|
||||||
import { TypeOrmUserRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-user.repository';
|
import { TypeOrmUserRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-user.repository';
|
||||||
import { UserOrmEntity } from '../../infrastructure/persistence/typeorm/entities/user.orm-entity';
|
import { UserOrmEntity } from '../../infrastructure/persistence/typeorm/entities/user.orm-entity';
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import { WebhooksController } from '../controllers/webhooks.controller';
|
|||||||
import { WebhookService } from '../services/webhook.service';
|
import { WebhookService } from '../services/webhook.service';
|
||||||
import { WebhookOrmEntity } from '../../infrastructure/persistence/typeorm/entities/webhook.orm-entity';
|
import { WebhookOrmEntity } from '../../infrastructure/persistence/typeorm/entities/webhook.orm-entity';
|
||||||
import { TypeOrmWebhookRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-webhook.repository';
|
import { TypeOrmWebhookRepository } from '../../infrastructure/persistence/typeorm/repositories/typeorm-webhook.repository';
|
||||||
import { WEBHOOK_REPOSITORY } from '../../domain/ports/out/webhook.repository';
|
import { WEBHOOK_REPOSITORY } from '@domain/ports/out/webhook.repository';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
import { Module, Global } from '@nestjs/common';
|
import { Module, Global } from '@nestjs/common';
|
||||||
import { RedisCacheAdapter } from './redis-cache.adapter';
|
import { RedisCacheAdapter } from './redis-cache.adapter';
|
||||||
import { CACHE_PORT } from '../../domain/ports/out/cache.port';
|
import { CACHE_PORT } from '@domain/ports/out/cache.port';
|
||||||
|
|
||||||
@Global()
|
@Global()
|
||||||
@Module({
|
@Module({
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
import { Injectable, OnModuleInit, OnModuleDestroy, Logger } from '@nestjs/common';
|
import { Injectable, OnModuleInit, OnModuleDestroy, Logger } from '@nestjs/common';
|
||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import Redis from 'ioredis';
|
import Redis from 'ioredis';
|
||||||
import { CachePort } from '../../domain/ports/out/cache.port';
|
import { CachePort } from '@domain/ports/out/cache.port';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class RedisCacheAdapter implements CachePort, OnModuleInit, OnModuleDestroy {
|
export class RedisCacheAdapter implements CachePort, OnModuleInit, OnModuleDestroy {
|
||||||
|
|||||||
@ -12,10 +12,10 @@ import {
|
|||||||
CarrierConnectorPort,
|
CarrierConnectorPort,
|
||||||
CarrierRateSearchInput,
|
CarrierRateSearchInput,
|
||||||
CarrierAvailabilityInput,
|
CarrierAvailabilityInput,
|
||||||
} from '../../domain/ports/out/carrier-connector.port';
|
} from '@domain/ports/out/carrier-connector.port';
|
||||||
import { RateQuote } from '../../domain/entities/rate-quote.entity';
|
import { RateQuote } from '@domain/entities/rate-quote.entity';
|
||||||
import { CarrierTimeoutException } from '../../domain/exceptions/carrier-timeout.exception';
|
import { CarrierTimeoutException } from '@domain/exceptions/carrier-timeout.exception';
|
||||||
import { CarrierUnavailableException } from '../../domain/exceptions/carrier-unavailable.exception';
|
import { CarrierUnavailableException } from '@domain/exceptions/carrier-unavailable.exception';
|
||||||
|
|
||||||
export interface CarrierConfig {
|
export interface CarrierConfig {
|
||||||
name: string;
|
name: string;
|
||||||
|
|||||||
@ -10,8 +10,8 @@ import {
|
|||||||
CarrierConnectorPort,
|
CarrierConnectorPort,
|
||||||
CarrierRateSearchInput,
|
CarrierRateSearchInput,
|
||||||
CarrierAvailabilityInput,
|
CarrierAvailabilityInput,
|
||||||
} from '../../../domain/ports/out/carrier-connector.port';
|
} from '@domain/ports/out/carrier-connector.port';
|
||||||
import { RateQuote } from '../../../domain/entities/rate-quote.entity';
|
import { RateQuote } from '@domain/entities/rate-quote.entity';
|
||||||
import { BaseCarrierConnector, CarrierConfig } from '../base-carrier.connector';
|
import { BaseCarrierConnector, CarrierConfig } from '../base-carrier.connector';
|
||||||
import { CMACGMRequestMapper } from './cma-cgm.mapper';
|
import { CMACGMRequestMapper } from './cma-cgm.mapper';
|
||||||
|
|
||||||
|
|||||||
@ -3,8 +3,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { CarrierRateSearchInput } from '../../../domain/ports/out/carrier-connector.port';
|
import { CarrierRateSearchInput } from '@domain/ports/out/carrier-connector.port';
|
||||||
import { RateQuote, RouteSegment, Surcharge } from '../../../domain/entities/rate-quote.entity';
|
import { RateQuote, RouteSegment, Surcharge } from '@domain/entities/rate-quote.entity';
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { Injectable, Logger } from '@nestjs/common';
|
|||||||
import { parse } from 'csv-parse/sync';
|
import { parse } from 'csv-parse/sync';
|
||||||
import * as fs from 'fs/promises';
|
import * as fs from 'fs/promises';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import { CsvRateLoaderPort } from '../../../domain/ports/out/csv-rate-loader.port';
|
import { CsvRateLoaderPort } from '@domain/ports/out/csv-rate-loader.port';
|
||||||
import { CsvRate } from '@domain/entities/csv-rate.entity';
|
import { CsvRate } from '@domain/entities/csv-rate.entity';
|
||||||
import { PortCode } from '@domain/value-objects/port-code.vo';
|
import { PortCode } from '@domain/value-objects/port-code.vo';
|
||||||
import { ContainerType } from '@domain/value-objects/container-type.vo';
|
import { ContainerType } from '@domain/value-objects/container-type.vo';
|
||||||
|
|||||||
@ -10,8 +10,8 @@ import {
|
|||||||
CarrierConnectorPort,
|
CarrierConnectorPort,
|
||||||
CarrierRateSearchInput,
|
CarrierRateSearchInput,
|
||||||
CarrierAvailabilityInput,
|
CarrierAvailabilityInput,
|
||||||
} from '../../../domain/ports/out/carrier-connector.port';
|
} from '@domain/ports/out/carrier-connector.port';
|
||||||
import { RateQuote } from '../../../domain/entities/rate-quote.entity';
|
import { RateQuote } from '@domain/entities/rate-quote.entity';
|
||||||
import { BaseCarrierConnector, CarrierConfig } from '../base-carrier.connector';
|
import { BaseCarrierConnector, CarrierConfig } from '../base-carrier.connector';
|
||||||
import { HapagLloydRequestMapper } from './hapag-lloyd.mapper';
|
import { HapagLloydRequestMapper } from './hapag-lloyd.mapper';
|
||||||
|
|
||||||
|
|||||||
@ -3,8 +3,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { CarrierRateSearchInput } from '../../../domain/ports/out/carrier-connector.port';
|
import { CarrierRateSearchInput } from '@domain/ports/out/carrier-connector.port';
|
||||||
import { RateQuote, RouteSegment, Surcharge } from '../../../domain/entities/rate-quote.entity';
|
import { RateQuote, RouteSegment, Surcharge } from '@domain/entities/rate-quote.entity';
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* Maps internal domain format to Maersk API format
|
* Maps internal domain format to Maersk API format
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { CarrierRateSearchInput } from '../../../domain/ports/out/carrier-connector.port';
|
import { CarrierRateSearchInput } from '@domain/ports/out/carrier-connector.port';
|
||||||
import { MaerskRateSearchRequest } from './maersk.types';
|
import { MaerskRateSearchRequest } from './maersk.types';
|
||||||
|
|
||||||
export class MaerskRequestMapper {
|
export class MaerskRequestMapper {
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
import { RateQuote } from '../../../domain/entities/rate-quote.entity';
|
import { RateQuote } from '@domain/entities/rate-quote.entity';
|
||||||
import { MaerskRateSearchResponse, MaerskRateResult, MaerskRouteSegment } from './maersk.types';
|
import { MaerskRateSearchResponse, MaerskRateResult, MaerskRouteSegment } from './maersk.types';
|
||||||
|
|
||||||
export class MaerskResponseMapper {
|
export class MaerskResponseMapper {
|
||||||
|
|||||||
@ -11,8 +11,8 @@ import { BaseCarrierConnector, CarrierConfig } from '../base-carrier.connector';
|
|||||||
import {
|
import {
|
||||||
CarrierRateSearchInput,
|
CarrierRateSearchInput,
|
||||||
CarrierAvailabilityInput,
|
CarrierAvailabilityInput,
|
||||||
} from '../../../domain/ports/out/carrier-connector.port';
|
} from '@domain/ports/out/carrier-connector.port';
|
||||||
import { RateQuote } from '../../../domain/entities/rate-quote.entity';
|
import { RateQuote } from '@domain/entities/rate-quote.entity';
|
||||||
import { MaerskRequestMapper } from './maersk-request.mapper';
|
import { MaerskRequestMapper } from './maersk-request.mapper';
|
||||||
import { MaerskResponseMapper } from './maersk-response.mapper';
|
import { MaerskResponseMapper } from './maersk-response.mapper';
|
||||||
import { MaerskRateSearchRequest, MaerskRateSearchResponse } from './maersk.types';
|
import { MaerskRateSearchRequest, MaerskRateSearchResponse } from './maersk.types';
|
||||||
|
|||||||
@ -10,8 +10,8 @@ import {
|
|||||||
CarrierConnectorPort,
|
CarrierConnectorPort,
|
||||||
CarrierRateSearchInput,
|
CarrierRateSearchInput,
|
||||||
CarrierAvailabilityInput,
|
CarrierAvailabilityInput,
|
||||||
} from '../../../domain/ports/out/carrier-connector.port';
|
} from '@domain/ports/out/carrier-connector.port';
|
||||||
import { RateQuote } from '../../../domain/entities/rate-quote.entity';
|
import { RateQuote } from '@domain/entities/rate-quote.entity';
|
||||||
import { BaseCarrierConnector, CarrierConfig } from '../base-carrier.connector';
|
import { BaseCarrierConnector, CarrierConfig } from '../base-carrier.connector';
|
||||||
import { MSCRequestMapper } from './msc.mapper';
|
import { MSCRequestMapper } from './msc.mapper';
|
||||||
|
|
||||||
|
|||||||
@ -5,8 +5,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { CarrierRateSearchInput } from '../../../domain/ports/out/carrier-connector.port';
|
import { CarrierRateSearchInput } from '@domain/ports/out/carrier-connector.port';
|
||||||
import { RateQuote, RouteSegment, Surcharge } from '../../../domain/entities/rate-quote.entity';
|
import { RateQuote, RouteSegment, Surcharge } from '@domain/entities/rate-quote.entity';
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
|||||||
@ -10,8 +10,8 @@ import {
|
|||||||
CarrierConnectorPort,
|
CarrierConnectorPort,
|
||||||
CarrierRateSearchInput,
|
CarrierRateSearchInput,
|
||||||
CarrierAvailabilityInput,
|
CarrierAvailabilityInput,
|
||||||
} from '../../../domain/ports/out/carrier-connector.port';
|
} from '@domain/ports/out/carrier-connector.port';
|
||||||
import { RateQuote } from '../../../domain/entities/rate-quote.entity';
|
import { RateQuote } from '@domain/entities/rate-quote.entity';
|
||||||
import { BaseCarrierConnector, CarrierConfig } from '../base-carrier.connector';
|
import { BaseCarrierConnector, CarrierConfig } from '../base-carrier.connector';
|
||||||
import { ONERequestMapper } from './one.mapper';
|
import { ONERequestMapper } from './one.mapper';
|
||||||
|
|
||||||
|
|||||||
@ -3,8 +3,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { CarrierRateSearchInput } from '../../../domain/ports/out/carrier-connector.port';
|
import { CarrierRateSearchInput } from '@domain/ports/out/carrier-connector.port';
|
||||||
import { RateQuote, RouteSegment, Surcharge } from '../../../domain/entities/rate-quote.entity';
|
import { RateQuote, RouteSegment, Surcharge } from '@domain/entities/rate-quote.entity';
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import * as nodemailer from 'nodemailer';
|
import * as nodemailer from 'nodemailer';
|
||||||
import { EmailPort, EmailOptions } from '../../domain/ports/out/email.port';
|
import { EmailPort, EmailOptions } from '@domain/ports/out/email.port';
|
||||||
import { EmailTemplates } from './templates/email-templates';
|
import { EmailTemplates } from './templates/email-templates';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import { Module } from '@nestjs/common';
|
|||||||
import { ConfigModule } from '@nestjs/config';
|
import { ConfigModule } from '@nestjs/config';
|
||||||
import { EmailAdapter } from './email.adapter';
|
import { EmailAdapter } from './email.adapter';
|
||||||
import { EmailTemplates } from './templates/email-templates';
|
import { EmailTemplates } from './templates/email-templates';
|
||||||
import { EMAIL_PORT } from '../../domain/ports/out/email.port';
|
import { EMAIL_PORT } from '@domain/ports/out/email.port';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [ConfigModule],
|
imports: [ConfigModule],
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import PDFDocument from 'pdfkit';
|
import PDFDocument from 'pdfkit';
|
||||||
import { PdfPort, BookingPdfData } from '../../domain/ports/out/pdf.port';
|
import { PdfPort, BookingPdfData } from '@domain/ports/out/pdf.port';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class PdfAdapter implements PdfPort {
|
export class PdfAdapter implements PdfPort {
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { PdfAdapter } from './pdf.adapter';
|
import { PdfAdapter } from './pdf.adapter';
|
||||||
import { PDF_PORT } from '../../domain/ports/out/pdf.port';
|
import { PDF_PORT } from '@domain/ports/out/pdf.port';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
providers: [
|
providers: [
|
||||||
|
|||||||
@ -9,9 +9,9 @@ import {
|
|||||||
BookingProps,
|
BookingProps,
|
||||||
Party,
|
Party,
|
||||||
BookingContainer,
|
BookingContainer,
|
||||||
} from '../../../../domain/entities/booking.entity';
|
} from '@domain/entities/booking.entity';
|
||||||
import { BookingNumber } from '../../../../domain/value-objects/booking-number.vo';
|
import { BookingNumber } from '@domain/value-objects/booking-number.vo';
|
||||||
import { BookingStatus } from '../../../../domain/value-objects/booking-status.vo';
|
import { BookingStatus } from '@domain/value-objects/booking-status.vo';
|
||||||
import { BookingOrmEntity, PartyJson } from '../entities/booking.orm-entity';
|
import { BookingOrmEntity, PartyJson } from '../entities/booking.orm-entity';
|
||||||
import { ContainerOrmEntity } from '../entities/container.orm-entity';
|
import { ContainerOrmEntity } from '../entities/container.orm-entity';
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* Maps between Carrier domain entity and CarrierOrmEntity
|
* Maps between Carrier domain entity and CarrierOrmEntity
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Carrier, CarrierProps } from '../../../../domain/entities/carrier.entity';
|
import { Carrier, CarrierProps } from '@domain/entities/carrier.entity';
|
||||||
import { CarrierOrmEntity } from '../entities/carrier.orm-entity';
|
import { CarrierOrmEntity } from '../entities/carrier.orm-entity';
|
||||||
|
|
||||||
export class CarrierOrmMapper {
|
export class CarrierOrmMapper {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* Maps between Organization domain entity and OrganizationOrmEntity
|
* Maps between Organization domain entity and OrganizationOrmEntity
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Organization, OrganizationProps } from '../../../../domain/entities/organization.entity';
|
import { Organization, OrganizationProps } from '@domain/entities/organization.entity';
|
||||||
import { OrganizationOrmEntity } from '../entities/organization.orm-entity';
|
import { OrganizationOrmEntity } from '../entities/organization.orm-entity';
|
||||||
|
|
||||||
export class OrganizationOrmMapper {
|
export class OrganizationOrmMapper {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* Maps between Port domain entity and PortOrmEntity
|
* Maps between Port domain entity and PortOrmEntity
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Port, PortProps } from '../../../../domain/entities/port.entity';
|
import { Port, PortProps } from '@domain/entities/port.entity';
|
||||||
import { PortOrmEntity } from '../entities/port.orm-entity';
|
import { PortOrmEntity } from '../entities/port.orm-entity';
|
||||||
|
|
||||||
export class PortOrmMapper {
|
export class PortOrmMapper {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* Maps between RateQuote domain entity and RateQuoteOrmEntity
|
* Maps between RateQuote domain entity and RateQuoteOrmEntity
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { RateQuote, RateQuoteProps } from '../../../../domain/entities/rate-quote.entity';
|
import { RateQuote, RateQuoteProps } from '@domain/entities/rate-quote.entity';
|
||||||
import { RateQuoteOrmEntity } from '../entities/rate-quote.orm-entity';
|
import { RateQuoteOrmEntity } from '../entities/rate-quote.orm-entity';
|
||||||
|
|
||||||
export class RateQuoteOrmMapper {
|
export class RateQuoteOrmMapper {
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
* Maps between User domain entity and UserOrmEntity
|
* Maps between User domain entity and UserOrmEntity
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { User, UserProps } from '../../../../domain/entities/user.entity';
|
import { User, UserProps } from '@domain/entities/user.entity';
|
||||||
import { UserOrmEntity } from '../entities/user.orm-entity';
|
import { UserOrmEntity } from '../entities/user.orm-entity';
|
||||||
|
|
||||||
export class UserOrmMapper {
|
export class UserOrmMapper {
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import { Injectable, Logger } from '@nestjs/common';
|
|||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository, LessThan, MoreThan } from 'typeorm';
|
import { Repository, LessThan, MoreThan } from 'typeorm';
|
||||||
import { CsvBooking, CsvBookingStatus } from '@domain/entities/csv-booking.entity';
|
import { CsvBooking, CsvBookingStatus } from '@domain/entities/csv-booking.entity';
|
||||||
import { CsvBookingRepositoryPort } from '../../../../domain/ports/out/csv-booking.repository';
|
import { CsvBookingRepositoryPort } from '@domain/ports/out/csv-booking.repository';
|
||||||
import { CsvBookingOrmEntity } from '../entities/csv-booking.orm-entity';
|
import { CsvBookingOrmEntity } from '../entities/csv-booking.orm-entity';
|
||||||
import { CsvBookingMapper } from '../mappers/csv-booking.mapper';
|
import { CsvBookingMapper } from '../mappers/csv-booking.mapper';
|
||||||
|
|
||||||
|
|||||||
@ -8,8 +8,8 @@ import { Repository, In, Between, MoreThanOrEqual, LessThanOrEqual } from 'typeo
|
|||||||
import {
|
import {
|
||||||
AuditLogRepository,
|
AuditLogRepository,
|
||||||
AuditLogFilters,
|
AuditLogFilters,
|
||||||
} from '../../../../domain/ports/out/audit-log.repository';
|
} from '@domain/ports/out/audit-log.repository';
|
||||||
import { AuditLog, AuditStatus, AuditAction } from '../../../../domain/entities/audit-log.entity';
|
import { AuditLog, AuditStatus, AuditAction } from '@domain/entities/audit-log.entity';
|
||||||
import { AuditLogOrmEntity } from '../entities/audit-log.orm-entity';
|
import { AuditLogOrmEntity } from '../entities/audit-log.orm-entity';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
|||||||
@ -7,10 +7,10 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { Booking } from '../../../../domain/entities/booking.entity';
|
import { Booking } from '@domain/entities/booking.entity';
|
||||||
import { BookingNumber } from '../../../../domain/value-objects/booking-number.vo';
|
import { BookingNumber } from '@domain/value-objects/booking-number.vo';
|
||||||
import { BookingStatus } from '../../../../domain/value-objects/booking-status.vo';
|
import { BookingStatus } from '@domain/value-objects/booking-status.vo';
|
||||||
import { BookingRepository } from '../../../../domain/ports/out/booking.repository';
|
import { BookingRepository } from '@domain/ports/out/booking.repository';
|
||||||
import { BookingOrmEntity } from '../entities/booking.orm-entity';
|
import { BookingOrmEntity } from '../entities/booking.orm-entity';
|
||||||
import { ContainerOrmEntity } from '../entities/container.orm-entity';
|
import { ContainerOrmEntity } from '../entities/container.orm-entity';
|
||||||
import { BookingOrmMapper } from '../mappers/booking-orm.mapper';
|
import { BookingOrmMapper } from '../mappers/booking-orm.mapper';
|
||||||
|
|||||||
@ -7,8 +7,8 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { Carrier } from '../../../../domain/entities/carrier.entity';
|
import { Carrier } from '@domain/entities/carrier.entity';
|
||||||
import { CarrierRepository } from '../../../../domain/ports/out/carrier.repository';
|
import { CarrierRepository } from '@domain/ports/out/carrier.repository';
|
||||||
import { CarrierOrmEntity } from '../entities/carrier.orm-entity';
|
import { CarrierOrmEntity } from '../entities/carrier.orm-entity';
|
||||||
import { CarrierOrmMapper } from '../mappers/carrier-orm.mapper';
|
import { CarrierOrmMapper } from '../mappers/carrier-orm.mapper';
|
||||||
|
|
||||||
|
|||||||
@ -8,8 +8,8 @@ import { Repository, LessThan } from 'typeorm';
|
|||||||
import {
|
import {
|
||||||
NotificationRepository,
|
NotificationRepository,
|
||||||
NotificationFilters,
|
NotificationFilters,
|
||||||
} from '../../../../domain/ports/out/notification.repository';
|
} from '@domain/ports/out/notification.repository';
|
||||||
import { Notification } from '../../../../domain/entities/notification.entity';
|
import { Notification } from '@domain/entities/notification.entity';
|
||||||
import { NotificationOrmEntity } from '../entities/notification.orm-entity';
|
import { NotificationOrmEntity } from '../entities/notification.orm-entity';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
|||||||
@ -7,8 +7,8 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { Organization } from '../../../../domain/entities/organization.entity';
|
import { Organization } from '@domain/entities/organization.entity';
|
||||||
import { OrganizationRepository } from '../../../../domain/ports/out/organization.repository';
|
import { OrganizationRepository } from '@domain/ports/out/organization.repository';
|
||||||
import { OrganizationOrmEntity } from '../entities/organization.orm-entity';
|
import { OrganizationOrmEntity } from '../entities/organization.orm-entity';
|
||||||
import { OrganizationOrmMapper } from '../mappers/organization-orm.mapper';
|
import { OrganizationOrmMapper } from '../mappers/organization-orm.mapper';
|
||||||
|
|
||||||
|
|||||||
@ -7,8 +7,8 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository, ILike } from 'typeorm';
|
import { Repository, ILike } from 'typeorm';
|
||||||
import { Port } from '../../../../domain/entities/port.entity';
|
import { Port } from '@domain/entities/port.entity';
|
||||||
import { PortRepository } from '../../../../domain/ports/out/port.repository';
|
import { PortRepository } from '@domain/ports/out/port.repository';
|
||||||
import { PortOrmEntity } from '../entities/port.orm-entity';
|
import { PortOrmEntity } from '../entities/port.orm-entity';
|
||||||
import { PortOrmMapper } from '../mappers/port-orm.mapper';
|
import { PortOrmMapper } from '../mappers/port-orm.mapper';
|
||||||
|
|
||||||
|
|||||||
@ -7,8 +7,8 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository, LessThan } from 'typeorm';
|
import { Repository, LessThan } from 'typeorm';
|
||||||
import { RateQuote } from '../../../../domain/entities/rate-quote.entity';
|
import { RateQuote } from '@domain/entities/rate-quote.entity';
|
||||||
import { RateQuoteRepository } from '../../../../domain/ports/out/rate-quote.repository';
|
import { RateQuoteRepository } from '@domain/ports/out/rate-quote.repository';
|
||||||
import { RateQuoteOrmEntity } from '../entities/rate-quote.orm-entity';
|
import { RateQuoteOrmEntity } from '../entities/rate-quote.orm-entity';
|
||||||
import { RateQuoteOrmMapper } from '../mappers/rate-quote-orm.mapper';
|
import { RateQuoteOrmMapper } from '../mappers/rate-quote-orm.mapper';
|
||||||
|
|
||||||
|
|||||||
@ -7,8 +7,8 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { User } from '../../../../domain/entities/user.entity';
|
import { User } from '@domain/entities/user.entity';
|
||||||
import { UserRepository } from '../../../../domain/ports/out/user.repository';
|
import { UserRepository } from '@domain/ports/out/user.repository';
|
||||||
import { UserOrmEntity } from '../entities/user.orm-entity';
|
import { UserOrmEntity } from '../entities/user.orm-entity';
|
||||||
import { UserOrmMapper } from '../mappers/user-orm.mapper';
|
import { UserOrmMapper } from '../mappers/user-orm.mapper';
|
||||||
|
|
||||||
|
|||||||
@ -5,8 +5,8 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { WebhookRepository, WebhookFilters } from '../../../../domain/ports/out/webhook.repository';
|
import { WebhookRepository, WebhookFilters } from '@domain/ports/out/webhook.repository';
|
||||||
import { Webhook, WebhookEvent, WebhookStatus } from '../../../../domain/entities/webhook.entity';
|
import { Webhook, WebhookEvent, WebhookStatus } from '@domain/entities/webhook.entity';
|
||||||
import { WebhookOrmEntity } from '../entities/webhook.orm-entity';
|
import { WebhookOrmEntity } from '../entities/webhook.orm-entity';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
|||||||
@ -21,7 +21,7 @@ import {
|
|||||||
DownloadOptions,
|
DownloadOptions,
|
||||||
DeleteOptions,
|
DeleteOptions,
|
||||||
StorageObject,
|
StorageObject,
|
||||||
} from '../../domain/ports/out/storage.port';
|
} from '@domain/ports/out/storage.port';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class S3StorageAdapter implements StoragePort {
|
export class S3StorageAdapter implements StoragePort {
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { ConfigModule } from '@nestjs/config';
|
import { ConfigModule } from '@nestjs/config';
|
||||||
import { S3StorageAdapter } from './s3-storage.adapter';
|
import { S3StorageAdapter } from './s3-storage.adapter';
|
||||||
import { STORAGE_PORT } from '../../domain/ports/out/storage.port';
|
import { STORAGE_PORT } from '@domain/ports/out/storage.port';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [ConfigModule],
|
imports: [ConfigModule],
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user