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

70 lines
1.6 KiB
TypeScript
Raw Normal View History

import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
ManyToOne,
JoinColumn,
OneToMany,
} from 'typeorm';
import { User } from './user.entity';
import { GroupMember } from './group-member.entity';
import { Appointment } from './appointment.entity';
@Entity('groups')
export class Group {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ length: 100 })
name: string;
@Column({ type: 'text', nullable: true })
description: string;
@Column({ type: 'varchar', nullable: true, length: 255 })
avatar: string;
@Column()
ownerId: string;
@ManyToOne(() => User)
@JoinColumn({ name: 'ownerId' })
owner: User;
@Column({ default: 'normal', length: 20, comment: '类型: normal/guild' })
type: string;
@Column({ nullable: true, comment: '父组ID用于子组' })
parentId: string;
@ManyToOne(() => Group, { nullable: true })
@JoinColumn({ name: 'parentId' })
parent: Group;
@Column({ type: 'text', nullable: true, comment: '公示信息' })
announcement: string;
@Column({ default: 50, comment: '最大成员数' })
maxMembers: number;
@Column({ default: 1, comment: '当前成员数' })
currentMembers: number;
@Column({ default: true })
isActive: boolean;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
@OneToMany(() => GroupMember, (member) => member.group)
members: GroupMember[];
@OneToMany(() => Appointment, (appointment) => appointment.group)
appointments: Appointment[];
}