import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, ManyToOne, JoinColumn } from 'typeorm';
import { DocumentType, DocumentStatus } from '@livebeauty/shared';
import { KYCVerification } from './kyc-verification.entity';

@Entity('kyc_documents')
export class KYCDocument {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column({ name: 'verification_id' })
  verificationId: string;

  @Column({ type: 'enum', enum: DocumentType })
  type: DocumentType;

  @Column({ name: 'file_path' })
  filePath: string;

  @Column({ name: 'file_name' })
  fileName: string;

  @Column({ name: 'mime_type' })
  mimeType: string;

  @Column({ name: 'file_size', type: 'int' })
  fileSize: number;

  @Column({ type: 'enum', enum: DocumentStatus, default: DocumentStatus.PENDING })
  status: DocumentStatus;

  @Column({ name: 'admin_notes', type: 'text', nullable: true })
  adminNotes: string;

  @ManyToOne(() => KYCVerification, verification => verification.documents)
  @JoinColumn({ name: 'verification_id' })
  verification: KYCVerification;

  @CreateDateColumn({ name: 'uploaded_at' })
  uploadedAt: Date;
}