import { ObjectType, Field, ID } from '@nestjs/graphql'; import { Entity, Column, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn, ManyToMany, JoinTable, OneToMany } from 'typeorm'; import { User } from '../../users/entities/user.entity'; import { Message } from '../../messages/entities/message.entity'; @ObjectType() @Entity('conversations') export class Conversation { @Field(() => ID) @PrimaryGeneratedColumn('uuid') id: string; @Field(() => String, { nullable: true }) @Column({ nullable: true }) name?: string; @Field(() => Boolean) @Column({ default: false }) isGroup: boolean; @Field(() => [User]) @ManyToMany(() => User) @JoinTable({ name: 'conversation_participants', joinColumn: { name: 'conversationId', referencedColumnName: 'id' }, inverseJoinColumn: { name: 'userId', referencedColumnName: 'id' }, }) participants: User[]; @Field(() => [Message]) @OneToMany(() => Message, message => message.conversation) messages: Message[]; @Field(() => Message, { nullable: true }) lastMessage?: Message; @Field(() => Date) @CreateDateColumn() createdAt: Date; @Field(() => Date) @UpdateDateColumn() updatedAt: Date; }