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