mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-09-07 20:05:41 +00:00
40 lines
1.5 KiB
TypeScript
40 lines
1.5 KiB
TypeScript
import { BaseEntity } from '@edr/api-common';
|
|
import { Column, Entity, Index, JoinColumn, ManyToOne, Unique } from 'typeorm';
|
|
|
|
import { Vehicle } from '../../vehicles/entities/vehicle.entity';
|
|
import { LastMile } from './last-mile.entity';
|
|
|
|
/**
|
|
* One row per vehicle assigned to a last-mile delivery. A delivery can be
|
|
* served by several vehicles at once (multi-truck bookings); the legacy
|
|
* `last_mile.vehicle_id` column keeps pointing at the first assignment for
|
|
* backward compatibility.
|
|
*/
|
|
@Entity({ name: 'last_mile_vehicle_assignments', schema: 'freight' })
|
|
@Unique(['lastMileId', 'vehicleId'])
|
|
@Index(['vehicleId'])
|
|
export class LastMileVehicleAssignment extends BaseEntity {
|
|
@Column({ name: 'last_mile_id', type: 'uuid' })
|
|
lastMileId!: string;
|
|
|
|
@ManyToOne(() => LastMile, (lm) => lm.vehicleAssignments, { nullable: false, onDelete: 'CASCADE' })
|
|
@JoinColumn({ name: 'last_mile_id' })
|
|
lastMile?: LastMile;
|
|
|
|
@Column({ name: 'vehicle_id', type: 'uuid' })
|
|
vehicleId!: string;
|
|
|
|
@ManyToOne(() => Vehicle, { nullable: false, eager: false })
|
|
@JoinColumn({ name: 'vehicle_id' })
|
|
vehicle?: Vehicle;
|
|
|
|
/** Container this truck carries — auto-filled from the booking's container
|
|
* number when known, else entered manually at assignment time. */
|
|
@Column({ name: 'container_number', type: 'varchar', nullable: true })
|
|
containerNumber?: string | null;
|
|
|
|
/** Actual distance driven by this truck (km), entered per vehicle. */
|
|
@Column({ name: 'distance_km', type: 'numeric', precision: 10, scale: 2, nullable: true })
|
|
distanceKm?: number | null;
|
|
}
|