import { AddOn } from "src/modules/add-ons/entities/add-ons.entity"
import { City } from "src/modules/city/entities/city.entity"
import { Plan } from "src/modules/plans/entities/plan.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: "add_ons_pricing" })
export class AddOnsPricing {
  @PrimaryGeneratedColumn()
  id: number

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

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

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

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

  @Column({ type: "varchar", nullable: true })
  price: string

  @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(() => VehicleType, (vehicle_type) => vehicle_type.add_ons_pricing)
  @JoinColumn({ name: "vehicle_type_id" })
  vehicle_type: VehicleType

  @ManyToOne(() => AddOn, (add_on) => add_on.add_ons_pricing)
  @JoinColumn({ name: "add_on_id" })
  add_on: AddOn

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