44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
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;
|
|
} |