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; }