import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, Index, Unique } from 'typeorm';

export type LibraryScope = 'readiness' | 'full';
export type GroupKey = 'clause' | 'performance' | 'risk' | 'feedback' | 'statutory';

/** One checkpoint the auditor answers on a report (a clause, or a Stage 2 effectiveness element). */
@Entity({ name: 'clause_library' })
@Unique('uq_clause_library', ['standard_id', 'scope', 'group_key', 'code'])
export class ClauseLibrary {
  @PrimaryGeneratedColumn() id: number;

  @Index() @Column({ type: 'int' }) standard_id: number;
  @Column({ type: 'enum', enum: ['readiness', 'full'] }) scope: LibraryScope;
  @Column({ type: 'enum', enum: ['clause', 'performance', 'risk', 'feedback', 'statutory'], default: 'clause' })
  group_key: GroupKey;

  @Column({ type: 'varchar', length: 40 }) code: string;
  @Column({ type: 'varchar', length: 200, default: '' }) heading: string;
  @Column({ type: 'varchar', length: 255, default: '' }) title: string;
  @Column({ type: 'text', nullable: true }) requirement: string | null;
  @Column({ type: 'text', nullable: true }) default_evidence: string | null;
  @Column({ type: 'int', default: 0 }) sort_order: number;
  @Column({ type: 'tinyint', width: 1, default: 1 }) is_active: boolean;

  @CreateDateColumn() created_at: Date;
  @UpdateDateColumn() updated_at: Date;
}
