Spaces:
Sleeping
Sleeping
| import { | |
| Entity, | |
| PrimaryGeneratedColumn, | |
| Column, | |
| ManyToOne, | |
| OneToMany, | |
| JoinColumn, | |
| } from 'typeorm'; | |
| import type { Relation } from 'typeorm'; | |
| ('messages') | |
| export class Message { | |
| ('increment', { name: 'message_id', type: 'bigint', unsigned: true }) | |
| id: number; | |
| ({ name: 'sender_id', type: 'bigint', unsigned: true }) | |
| senderId: number; | |
| ({ name: 'subject', type: 'varchar', length: 255, nullable: true }) | |
| subject: string | null; | |
| ({ name: 'body', type: 'text', nullable: true }) | |
| body: string | null; | |
| ({ name: 'message_type', type: 'enum', enum: ['direct', 'group', 'announcement'] }) | |
| messageType: string; | |
| ({ name: 'parent_message_id', type: 'bigint', unsigned: true, nullable: true }) | |
| parentMessageId: number; | |
| ({ name: 'reply_to_id', type: 'bigint', unsigned: true, nullable: true }) | |
| replyToId: number | null; | |
| ({ name: 'read_status', type: 'tinyint', default: 0 }) | |
| readStatus: boolean; | |
| ({ name: 'sent_at', type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' }) | |
| sentAt: Date; | |
| ({ name: 'edited_at', type: 'timestamp', nullable: true }) | |
| editedAt: Date | null; | |
| // Relations | |
| ('Message', 'replies', { nullable: true }) | |
| ({ name: 'parent_message_id' }) | |
| parentMessage: Relation<Message>; | |
| ('Message', 'parentMessage') | |
| replies: Relation<Message>[]; | |
| ('Message', { nullable: true }) | |
| ({ name: 'reply_to_id' }) | |
| replyTo: Relation<Message>; | |
| ('MessageParticipant', 'message') | |
| participants: Relation<MessageParticipant>[]; | |
| } | |
| import type { MessageParticipant } from './message-participant.entity'; | |