import {
  Column,
  CreateDateColumn,
  Entity,
  OneToMany,
  PrimaryGeneratedColumn,
  type Relation,
  UpdateDateColumn,
} from 'typeorm';
import { ProjectMember } from './project-member.entity';

// 프로젝트 엔티티 — 작업의 기본 단위. 업무·멤버·활동이 프로젝트에 연동된다.
@Entity('projects')
export class Project {
  // 내부 식별자 (UUID) — 라우팅에도 사용
  @PrimaryGeneratedColumn('uuid')
  id!: string;

  // 표시 제목(한글, 예: '3분기 신제품 런칭 캠페인')
  @Column()
  name!: string;

  // 설명(선택)
  @Column({ type: 'varchar', nullable: true })
  description!: string | null;

  // 멤버 목록
  @OneToMany(() => ProjectMember, (member) => member.project)
  members!: Relation<ProjectMember>[];

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

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