import {
  Entity,
  PrimaryGeneratedColumn,
  Column,
  ManyToOne,
  JoinColumn,
  Unique,
  CreateDateColumn,
  UpdateDateColumn,
  Index,
} from 'typeorm';
import { Company } from './company.entity';

@Entity('company_client_links')
@Unique('uq_company_client', ['companyId', 'clientGroup'])
@Index('idx_company_id')
@Index('idx_client_group')
export class CompanyClientLink {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ name: 'company_id', type: 'int' })
  companyId: number;

  @Column({ name: 'client_group', type: 'varchar', length: 50 })
  clientGroup: string;

  @Column({ name: 'client_ref_id', type: 'varchar', length: 100, nullable: true })
  clientRefId: string | null;

  @Column({ name: 'status', type: 'enum', enum: ['ACTIVE', 'INACTIVE'], default: 'ACTIVE' })
  status: string;

  @CreateDateColumn({ name: 'created_at', type: 'timestamp' })
  createdAt: Date;

  @UpdateDateColumn({ name: 'updated_at', type: 'timestamp' })
  updatedAt: Date;

  // Relations
  @ManyToOne(() => Company, (c) => c.clientLinks, { onDelete: 'CASCADE' })
  @JoinColumn({ name: 'company_id' })
  company: Company;
}