import { Plan } from "src/modules/plans/entities/plan.entity"
import { TripBasePricing } from "src/modules/trips/entities/trip-base-pricing.entity"
import { TripType } from "src/modules/trips/entities/trip-type.entity"
import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  ManyToOne,
  JoinColumn,
  CreateDateColumn,
  UpdateDateColumn,
  DeleteDateColumn,
  OneToMany,
} from "typeorm"

@Entity({ name: "meet_and_greet_pricing" })
export class MeetAndGreetPricing {
  @PrimaryGeneratedColumn()
  id: number

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

  @Column({ type: "int", nullable: true })
  service_type_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(
    () => TripType,
    (service_type) => service_type.meet_and_greet_pricing,
  )
  @JoinColumn({ name: "service_type_id" })
  service_type: TripType

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

  @OneToMany(
    () => TripBasePricing,
    (base_pricing) => base_pricing.meet_greet_pricing,
  )
  base_pricing: TripBasePricing[]
}
