import { City } from "src/modules/city/entities/city.entity"
import { Plan } from "src/modules/plans/entities/plan.entity"
import { TripType } from "src/modules/trips/entities/trip-type.entity"
import { VehicleType } from "src/modules/vehicle-type/entities/vehicle-type.entity"
import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  ManyToOne,
  JoinColumn,
  CreateDateColumn,
  UpdateDateColumn,
  DeleteDateColumn,
} from "typeorm"

@Entity({ name: "vehicle_pricing" })
export class VehiclePricing {
  @PrimaryGeneratedColumn()
  id: number

  @Column({ type: "int" })
  plan_id: number

  @Column({ type: "int" })
  vehicle_type_id: number

  @Column({ type: "int" })
  service_type_id: number

  @Column({ type: "int", nullable: true })
  city_id: number

  @Column({ type: "varchar" })
  price: number

  @CreateDateColumn({ type: "timestamp" })
  created_at: Date

  @UpdateDateColumn({ type: "timestamp" })
  updated_at: Date

  @DeleteDateColumn({ type: "timestamp", nullable: true })
  deleted_at?: Date

  @ManyToOne(() => Plan, (plan) => plan.vehicle_pricing)
  @JoinColumn({ name: "plan_id" })
  plan: Plan

  @ManyToOne(() => TripType, (service_type) => service_type.vehicle_pricing)
  @JoinColumn({ name: "service_type_id" })
  service_type: TripType

  @ManyToOne(() => City, (city) => city.vehicle_pricing)
  @JoinColumn({ name: "city_id" })
  city: City

  @ManyToOne(() => VehicleType, (vehicle_type) => vehicle_type.vehicle_pricing)
  @JoinColumn({ name: "vehicle_type_id" })
  vehicle_type: VehicleType
}
