import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, ManyToOne, OneToMany, JoinColumn } from 'typeorm';
import { Activity } from '../activities/activity.entity';
import { QuestionOption } from '../question-options/question-option.entity';

@Entity({ name: 'questions' })
export class Question {
  @PrimaryGeneratedColumn({ type: 'bigint' })
  id!: number;

  @Column({ type: 'bigint', name: 'activity_id', nullable: true })
  activityId?: number;

  @ManyToOne(() => Activity, { onDelete: 'SET NULL', nullable: true })
  @JoinColumn({ name: 'activity_id' })
  activity?: Activity;

  @Column({ type: 'text' })
  questionText!: string;

  @Column({ type: 'varchar', length: 64 })
  questionType!: string;

  @Column({ type: 'varchar', length: 1024, nullable: true })
  imagePath?: string;

  @Column({ type: 'text', nullable: true })
  explanation?: string;

  @Column({ type: 'int', default: 1 })
  score!: number;

  @Column({ name: 'order_index', type: 'int', default: 0 })
  orderIndex!: number;

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

  @OneToMany(() => QuestionOption, (option) => option.question)
  options?: QuestionOption[];
}
