// apps/edr-freight-api/src/modules/container-management/entities/container.entity.ts import { Entity, Column, ManyToOne, OneToMany, JoinColumn } from 'typeorm'; import { BaseEntity } from '@edr/api-common'; import { Wagon } from '../../wagons/entities/wagon.entity'; import { Cargo } from '../../cargoes/entities/cargoes.entity'; @Entity({ name: 'containers', schema: 'freight' }) export class Container extends BaseEntity { @Column({ unique: true, name: 'container_number' }) containerNumber!: string; @Column({ name: 'container_type_id', type: 'uuid' }) containerTypeId!: string; @Column({ name: 'wagon_id', type: 'uuid', nullable: true }) wagonId!: string | null; @Column({ type: 'int', nullable: true }) position!: number | null; // position on the wagon (1..N) @Column({ name: 'tare_weight', type: 'decimal', precision: 10, scale: 2 }) tareWeight!: number; @Column({ name: 'max_gross_weight', type: 'decimal', precision: 10, scale: 2 }) maxGrossWeight!: number; @Column({ name: 'seal_number', type: 'varchar', nullable: true, }) sealNumber!: string | null; @Column({ type: 'varchar', default: 'AVAILABLE' }) status!: string; // AVAILABLE, LOADED, IN_TRANSIT, MAINTENANCE, DAMAGED // Relationship to Wagon @ManyToOne(() => Wagon, (wagon) => wagon.containers, { onDelete: 'SET NULL' }) @JoinColumn({ name: 'wagon_id' }) wagon!: Wagon | null; // Relationship to Cargo @OneToMany(() => Cargo, (cargo) => cargo.container) cargoes!: Cargo[]; }