import { BaseEntity } from '@edr/api-common'; import { Freight } from '@edr/types'; import { Column, Entity, Index, JoinColumn, ManyToOne } from 'typeorm'; import { ContainerType } from './container-type.entity'; import { Surcharge } from './surcharge.entity'; @Entity({ schema: 'freight', name: 'weight_limit_rules' }) @Index(['containerTypeId']) @Index(['surchargeId']) @Index(['isActive']) export class WeightLimitRule extends BaseEntity { @Column({ name: 'container_type_id', type: 'uuid' }) containerTypeId!: string; @ManyToOne(() => ContainerType, (ct) => ct.weightLimitRules) @JoinColumn({ name: 'container_type_id' }) containerType!: ContainerType; @Column({ name: 'trade_direction', type: 'enum', enum: Freight.TradeDirection }) tradeDirection!: Freight.TradeDirection; @Column({ name: 'max_weight_tons', type: 'numeric', precision: 10, scale: 2 }) maxWeightTons!: number; @Column({ name: 'warning_threshold_tons', type: 'numeric', precision: 10, scale: 2 }) warningThresholdTons!: number; @Column({ name: 'exceeded_action', type: 'enum', enum: Freight.ExceededAction, default: Freight.ExceededAction.WARNING_ONLY, }) exceededAction!: Freight.ExceededAction; @Column({ name: 'surcharge_id', type: 'uuid', nullable: true }) surchargeId?: string | null; @ManyToOne(() => Surcharge, (s) => s.weightLimitRules, { nullable: true }) @JoinColumn({ name: 'surcharge_id' }) surcharge?: Surcharge | null; @Column({ name: 'is_active', type: 'boolean', default: true }) isActive!: boolean; }