Files
gamegroup/src/entities/group-member.entity.ts

50 lines
1.1 KiB
TypeScript
Raw Normal View History

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