mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-29 03:40:56 +00:00
- Introduced new yard distances resource with CRUD operations. - Created migration for yard distances table with necessary constraints. - Implemented service and repository for yard distances handling. - Added controller for API endpoints to manage yard distances. - Updated rule engine configuration to include yard distances. - Enhanced rule engine resource page to support yard distance selection. - Updated contracts and train builder pages to handle new yard distance logic. - Added error handling utility for better error message extraction.
36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { BaseEntity } from '@edr/api-common';
|
|
import { Column, Entity, Index, JoinColumn, ManyToOne } from 'typeorm';
|
|
|
|
import { Yard } from './yard.entity';
|
|
|
|
/**
|
|
* Configured rail distance between two yards. Route creation reads segment
|
|
* kilometres from here (symmetric: A→B serves B→A too) instead of taking
|
|
* them as free-text input — see RoutesService.validateMilestones.
|
|
*
|
|
* Uniqueness on (from_yard_id, to_yard_id) is a partial index in the DB
|
|
* (WHERE deleted_at IS NULL) rather than a @Unique decorator, so a
|
|
* soft-deleted pair can be re-created.
|
|
*/
|
|
@Entity({ schema: 'freight', name: 'yard_distances' })
|
|
@Index(['fromYardId'])
|
|
@Index(['toYardId'])
|
|
export class YardDistance extends BaseEntity {
|
|
@Column({ name: 'from_yard_id', type: 'uuid' })
|
|
fromYardId!: string;
|
|
|
|
@ManyToOne(() => Yard)
|
|
@JoinColumn({ name: 'from_yard_id' })
|
|
fromYard?: Yard;
|
|
|
|
@Column({ name: 'to_yard_id', type: 'uuid' })
|
|
toYardId!: string;
|
|
|
|
@ManyToOne(() => Yard)
|
|
@JoinColumn({ name: 'to_yard_id' })
|
|
toYard?: Yard;
|
|
|
|
@Column({ name: 'distance_km', type: 'decimal', precision: 10, scale: 2 })
|
|
distanceKm!: string; // decimal columns come back as string in typeorm/pg — keep consistent with RouteMilestone.distanceKm
|
|
}
|