mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-09-03 13:13:40 +00:00
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { BaseEntity } from '@edr/api-common';
|
|
import { Column, Entity, Index, JoinColumn, ManyToOne } from 'typeorm';
|
|
import { Yard } from '../../rule-engine/entities/yard.entity';
|
|
import { Contract } from './contract.entity';
|
|
|
|
/**
|
|
* An allowed origin→destination lane of a contract. Routes carry NO quantity —
|
|
* the contract scope just lists which lanes shipments may use. See §5.3.
|
|
*/
|
|
@Entity({ schema: 'freight', name: 'contract_routes' })
|
|
@Index(['contractId'])
|
|
export class ContractRoute extends BaseEntity {
|
|
@Column({ name: 'contract_id', type: 'uuid' })
|
|
contractId!: string;
|
|
|
|
@ManyToOne(() => Contract, (c) => c.routes, { onDelete: 'CASCADE' })
|
|
@JoinColumn({ name: 'contract_id' })
|
|
contract?: Contract;
|
|
|
|
@Column({ name: 'origin_yard_id', type: 'uuid' })
|
|
originYardId!: string;
|
|
|
|
@ManyToOne(() => Yard)
|
|
@JoinColumn({ name: 'origin_yard_id' })
|
|
originYard?: Yard;
|
|
|
|
@Column({ name: 'destination_yard_id', type: 'uuid' })
|
|
destinationYardId!: string;
|
|
|
|
@ManyToOne(() => Yard)
|
|
@JoinColumn({ name: 'destination_yard_id' })
|
|
destinationYard?: Yard;
|
|
|
|
/** Road billing distance; null for rail-only. */
|
|
@Column({ name: 'km', type: 'numeric', precision: 10, scale: 2, nullable: true })
|
|
km?: number | null;
|
|
|
|
@Column({ name: 'sort_order', type: 'smallint', default: 0 })
|
|
sortOrder!: number;
|
|
}
|