Files
prism/backend/src/modules/conversations/entities/conversation.entity.ts

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