63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
// File: src/modules/review-team/entities/review-team-member.entity.ts
|
|
import {
|
|
Entity,
|
|
Column,
|
|
PrimaryGeneratedColumn,
|
|
CreateDateColumn,
|
|
ManyToOne,
|
|
JoinColumn,
|
|
} from 'typeorm';
|
|
import { Exclude } from 'class-transformer';
|
|
import { UuidBaseEntity } from '../../../common/entities/uuid-base.entity';
|
|
import { User } from '../../user/entities/user.entity';
|
|
import { Discipline } from '../../master/entities/discipline.entity';
|
|
import { ReviewTeam } from './review-team.entity';
|
|
import { ReviewTeamMemberRole } from '../../common/enums/review.enums';
|
|
|
|
@Entity('review_team_members')
|
|
export class ReviewTeamMember extends UuidBaseEntity {
|
|
@PrimaryGeneratedColumn()
|
|
@Exclude()
|
|
id!: number;
|
|
|
|
@Column({ name: 'team_id' })
|
|
@Exclude()
|
|
teamId!: number;
|
|
|
|
@Column({ name: 'user_id' })
|
|
@Exclude()
|
|
userId!: number;
|
|
|
|
@Column({ name: 'discipline_id' })
|
|
@Exclude()
|
|
disciplineId!: number;
|
|
|
|
@Column({
|
|
type: 'enum',
|
|
enum: ReviewTeamMemberRole,
|
|
default: ReviewTeamMemberRole.REVIEWER,
|
|
})
|
|
role!: ReviewTeamMemberRole;
|
|
|
|
@Column({ name: 'priority_order', default: 0 })
|
|
priorityOrder!: number; // สำหรับ fallback sequential assignment
|
|
|
|
@CreateDateColumn({ name: 'created_at' })
|
|
createdAt!: Date;
|
|
|
|
// Relations
|
|
@ManyToOne(() => ReviewTeam, (team: ReviewTeam) => team.members, {
|
|
onDelete: 'CASCADE',
|
|
})
|
|
@JoinColumn({ name: 'team_id' })
|
|
team!: ReviewTeam;
|
|
|
|
@ManyToOne(() => User)
|
|
@JoinColumn({ name: 'user_id' })
|
|
user?: User;
|
|
|
|
@ManyToOne(() => Discipline)
|
|
@JoinColumn({ name: 'discipline_id' })
|
|
discipline?: Discipline;
|
|
}
|