import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, ManyToOne, JoinColumn, Unique, } from 'typeorm'; import { GroupMemberRole } from '../common/enums'; import { User } from './user.entity'; import { Group } from './group.entity'; @Entity('group_members') @Unique(['groupId', 'userId']) export class GroupMember { @PrimaryGeneratedColumn('uuid') id: string; @Column() groupId: string; @ManyToOne(() => Group, (group) => group.members, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'groupId' }) group: Group; @Column() userId: string; @ManyToOne(() => User, (user) => user.groupMembers, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'userId' }) user: User; @Column({ type: 'enum', enum: GroupMemberRole, default: GroupMemberRole.MEMBER, }) role: GroupMemberRole; @Column({ type: 'varchar', nullable: true, length: 50, comment: '组内昵称' }) nickname: string; @Column({ default: true }) isActive: boolean; @CreateDateColumn() joinedAt: Date; }