import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  CreateDateColumn,
  ManyToOne,
  JoinColumn,
} from "typeorm"
import { User } from "src/modules/users/entity/users.entity"
import { SubscriptionPlan } from "src/modules/subscription-plans/entities/subscription-plan.entity"

@Entity("subscription_history")
export class SubscriptionHistory {
  @PrimaryGeneratedColumn()
  id: number

  @Column({ name: "user_id", type: "bigint", unsigned: true })
  user_id: number

  @Column({
    name: "old_plan_id",
    type: "bigint",
    unsigned: true,
    nullable: true,
  })
  old_plan_id: number

  @Column({
    name: "new_plan_id",
    type: "bigint",
    unsigned: true,
    nullable: true,
  })
  new_plan_id: number

  @Column({ type: "varchar", length: 50 })
  action: string

  @CreateDateColumn({ type: "timestamp", nullable: true })
  created_at?: Date

  @ManyToOne(() => User, (user) => user.id)
  @JoinColumn({ name: "user_id" })
  user: User

  @ManyToOne(() => SubscriptionPlan, (plan) => plan.id)
  @JoinColumn({ name: "old_plan_id" })
  oldPlan: SubscriptionPlan

  @ManyToOne(() => SubscriptionPlan, (plan) => plan.id)
  @JoinColumn({ name: "new_plan_id" })
  newPlan: SubscriptionPlan
}
