mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
45 lines
1.5 KiB
TypeScript
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[];
|
|
} |