import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  CreateDateColumn,
  UpdateDateColumn,
  DeleteDateColumn,
  OneToOne,
  JoinColumn,
} from "typeorm"
import { ClientsCompany } from "src/modules/clients-companies/entities/clients-company.entity"

@Entity("invoice_settings")
export class InvoiceSettings {
  @PrimaryGeneratedColumn()
  id: number

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

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

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

  @Column({ type: "jsonb", nullable: true })
  fields: {
    [key: string]: {
      visible: boolean
      label: string
      is_fixed?: boolean
    }
  }

  @CreateDateColumn({ type: "timestamp", default: () => "NOW()" })
  created_at: Date

  @UpdateDateColumn({ type: "timestamp", default: () => "NOW()" })
  updated_at: Date

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

  @OneToOne(() => ClientsCompany, (client) => client.invoice_settings)
  @JoinColumn({ name: "client_id" })
  client: ClientsCompany
}
