import { Column, CreateDateColumn, Entity, Index, OneToMany, PrimaryGeneratedColumn, UpdateDateColumn } from 'typeorm';
import { BreachCheckWebsites } from './breach-check-website.entity';

/**
 * Entity representing organizations (for multi-tenant support)
 */
@Entity('breach_check_organizations')
export class BreachCheckOrganization {
  @PrimaryGeneratedColumn()
  id: number;

  @Column({ name: 'org_name', length: 255 })
  @Index({ unique: true })
  orgName: string;

  @Column({
    name: 'subscription_tier',
    type: 'enum',
    enum: ['FREE', 'BASIC', 'PROFESSIONAL', 'ENTERPRISE'],
    default: 'FREE',
  })
  subscriptionTier: string;

  @Column({ name: 'contact_email', length: 255 })
  contactEmail: string;

  @Column({ name: 'is_active', default: true })
  isActive: boolean;

  @OneToMany(() => BreachCheckWebsites, website => website.organization, {
    cascade: true,
    eager: true,
  })
  websites: BreachCheckWebsites[];

  @Column({ name: 'user_id', type: 'int', nullable: true })
  userId: number;

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

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