Files
edr-platform/apps/edr-freight-api/src/modules/container-management/entities/container.entity.ts

45 lines
1.5 KiB
TypeScript

// 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[];
}