From bee47b231a0d14219ab7843ae9373acafac653b4 Mon Sep 17 00:00:00 2001 From: natib21 Date: Mon, 22 Jun 2026 07:54:07 +0000 Subject: [PATCH] add column --- .../migrations/1810000000000-CreateFirstMile.ts | 14 ++++++++++++++ .../first-mile/dto/create-first-mile.dto.ts | 16 ++++++++++++++++ .../first-mile/entities/first-mile.entity.ts | 6 ++++++ .../src/modules/first-mile/first-mile.service.ts | 4 ++++ 4 files changed, 40 insertions(+) diff --git a/apps/edr-freight-api/src/migrations/1810000000000-CreateFirstMile.ts b/apps/edr-freight-api/src/migrations/1810000000000-CreateFirstMile.ts index 483977cb3..10c4f3a44 100644 --- a/apps/edr-freight-api/src/migrations/1810000000000-CreateFirstMile.ts +++ b/apps/edr-freight-api/src/migrations/1810000000000-CreateFirstMile.ts @@ -43,6 +43,20 @@ export class CreateFirstMile1810000000000 implements MigrationInterface { default: 0, isNullable: false, }, + { + name: 'estimated_km', + type: 'numeric', + precision: 10, + scale: 2, + isNullable: true, + }, + { + name: 'exact_km', + type: 'numeric', + precision: 10, + scale: 2, + isNullable: true, + }, { name: 'vehicle_id', type: 'uuid', isNullable: true }, { name: 'created_at', type: 'timestamptz', default: 'now()' }, { name: 'updated_at', type: 'timestamptz', default: 'now()' }, diff --git a/apps/edr-freight-api/src/modules/first-mile/dto/create-first-mile.dto.ts b/apps/edr-freight-api/src/modules/first-mile/dto/create-first-mile.dto.ts index cad68f419..bc0394eb6 100644 --- a/apps/edr-freight-api/src/modules/first-mile/dto/create-first-mile.dto.ts +++ b/apps/edr-freight-api/src/modules/first-mile/dto/create-first-mile.dto.ts @@ -34,7 +34,23 @@ export class CreateFirstMileDto { @Min(0) remainingPayment?: number; + @ApiPropertyOptional({ description: 'Planned distance for the leg, in km', example: 42.5 }) + @IsOptional() + @Transform(toNumber) + @IsNumber() + @Min(0) + estimatedKm?: number; + + @ApiPropertyOptional({ description: 'Actual distance travelled, in km', example: 44.1 }) + @IsOptional() + @Transform(toNumber) + @IsNumber() + @Min(0) + exactKm?: number; + @ApiPropertyOptional({ + type: String, + format: 'uuid', description: 'Assigned vehicle (FK → vehicles.id). May be null until assigned.', nullable: true, }) diff --git a/apps/edr-freight-api/src/modules/first-mile/entities/first-mile.entity.ts b/apps/edr-freight-api/src/modules/first-mile/entities/first-mile.entity.ts index b6407e9a3..17ed1c101 100644 --- a/apps/edr-freight-api/src/modules/first-mile/entities/first-mile.entity.ts +++ b/apps/edr-freight-api/src/modules/first-mile/entities/first-mile.entity.ts @@ -34,6 +34,12 @@ export class FirstMile extends BaseEntity { @Column({ name: 'remaining_payment', type: 'numeric', precision: 14, scale: 2, default: 0 }) remainingPayment!: number; + @Column({ name: 'estimated_km', type: 'numeric', precision: 10, scale: 2, nullable: true }) + estimatedKm?: number | null; + + @Column({ name: 'exact_km', type: 'numeric', precision: 10, scale: 2, nullable: true }) + exactKm?: number | null; + @Column({ name: 'vehicle_id', type: 'uuid', nullable: true }) vehicleId?: string | null; diff --git a/apps/edr-freight-api/src/modules/first-mile/first-mile.service.ts b/apps/edr-freight-api/src/modules/first-mile/first-mile.service.ts index 24774f3d9..a1ee4d364 100644 --- a/apps/edr-freight-api/src/modules/first-mile/first-mile.service.ts +++ b/apps/edr-freight-api/src/modules/first-mile/first-mile.service.ts @@ -80,6 +80,8 @@ export class FirstMileService { status: dto.status ?? 'PAYMENT_PENDING', advancedPayment: dto.advancedPayment ?? 0, remainingPayment: dto.remainingPayment ?? 0, + estimatedKm: dto.estimatedKm ?? null, + exactKm: dto.exactKm ?? null, vehicleId: dto.vehicleId ?? null, }); } @@ -92,6 +94,8 @@ export class FirstMileService { ...(dto.status !== undefined ? { status: dto.status } : {}), ...(dto.advancedPayment !== undefined ? { advancedPayment: dto.advancedPayment } : {}), ...(dto.remainingPayment !== undefined ? { remainingPayment: dto.remainingPayment } : {}), + ...(dto.estimatedKm !== undefined ? { estimatedKm: dto.estimatedKm } : {}), + ...(dto.exactKm !== undefined ? { exactKm: dto.exactKm } : {}), ...(dto.vehicleId !== undefined ? { vehicleId: dto.vehicleId } : {}), });