import { BaseEntity } from "@edr/api-common";
import {
  Column,
  Entity,
  Index,
  JoinColumn,
  ManyToOne,
} from "typeorm";

import { DropdownSetting } from "./dropdown-setting.entity";

export interface DropdownOptionMeta {
  icon?: string;
  color?: string;
  badge?: string;
}

@Entity({schema:"freight", name: "dropdown_options" })
@Index(["settingId", "value"], { unique: true })
export class DropdownOption extends BaseEntity {
  @ManyToOne(() => DropdownSetting, (setting) => setting.children, {
    onDelete: "CASCADE",
  })
  @JoinColumn({ name: "setting_id" })
  setting!: DropdownSetting;

  @Column({ name: "setting_id", type: "uuid" })
  settingId!: string;

  @Column({ name: "value", type: "varchar", length: 256 })
  value!: string;

  @Column({ name: "label", type: "varchar", length: 256 })
  label!: string;

  @Column({ name: "note", type: "text", nullable: true })
  note?: string | null;

  @Column({ name: "is_disabled", type: "boolean", default: false })
  disabled!: boolean;

  @Column({ name: "display_order", type: "integer", default: 0 })
  order!: number;

  @Column({ name: "meta", type: "jsonb", nullable: true })
  meta?: DropdownOptionMeta | null;
}
