import { BaseEntity } from "@edr/api-common";
import { Freight } from "@edr/types";
import { Column, Entity } from "typeorm";

@Entity({ name: "bookings" })
export class Booking extends BaseEntity {
  @Column({ name: "reference", type: "varchar", length: 64, unique: true })
  reference!: string;

  @Column({ name: "customer_id", type: "uuid" })
  customerId!: string;

  @Column({ name: "train_id", type: "uuid", nullable: true })
  trainId?: string | null;

  @Column({
    name: "status",
    type: "enum",
    enum: Freight.BookingStatus,
    default: Freight.BookingStatus.Draft,
  })
  status!: Freight.BookingStatus;

  @Column({ name: "scheduled_date", type: "timestamptz" })
  scheduledDate!: Date;

  @Column({
    name: "total_amount",
    type: "numeric",
    precision: 14,
    scale: 2,
    default: 0,
  })
  totalAmount!: number;

  @Column({
    name: "payment_status",
    type: "enum",
    enum: Freight.PaymentStatus,
    default: Freight.PaymentStatus.Pending,
  })
  paymentStatus!: Freight.PaymentStatus;
}
