import {
  Column,
  CreateDateColumn,
  Entity,
  JoinColumn,
  ManyToOne,
  PrimaryGeneratedColumn,
  type Relation,
} from 'typeorm';
import { Task } from './task.entity';

// 중간 점검일 — 지시자가 업무 배정 시 지정. 한 업무에 여러 개 가능.
// 작업자는 점검일~마감 구간에 진행 상태를 보고할 수 있다.
@Entity('task_checkpoints')
export class TaskCheckpoint {
  @PrimaryGeneratedColumn('uuid')
  id!: string;

  // 소속 업무 (업무 삭제 시 함께 삭제)
  @ManyToOne(() => Task, { onDelete: 'CASCADE' })
  @JoinColumn({ name: 'task_id' })
  task!: Relation<Task>;

  // 점검 예정일
  @Column({ name: 'check_at', type: 'timestamptz' })
  checkAt!: Date;

  // 표시 순서(입력 순)
  @Column({ name: 'sort_order', type: 'int', default: 0 })
  sortOrder!: number;

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