50 lines
1.1 KiB
TypeScript
50 lines
1.1 KiB
TypeScript
|
|
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;
|
||
|
|
}
|