/* * Copyright (c) 2022. * Author Peter Placzek (tada5hi) * For the full copyright and license information, * view the LICENSE file that was distributed with this source code. */ import { Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; import {ChatRoom} from "../room"; import {AuthUser} from "../../auth/user"; import {ChatMember} from "../member"; @Entity() export class ChatMessage { @PrimaryGeneratedColumn({type: "int", unsigned: true}) id!: number; @Column({type: "text"}) content!: string; @Column({type: "boolean", default: false}) encrypted!: boolean | null; @Column({type: "varchar", nullable: true}) nonce!: string | null; @CreateDateColumn() created_at!: string; @UpdateDateColumn() updated_at!: string @Column({type: "int", unsigned: true}) user_id!: number; @Column({type: "varchar"}) room_id!: string; @Column({type: "varchar", nullable: true}) member_id!: string; @ManyToOne(() => AuthUser, { onDelete: 'CASCADE' }) @JoinColumn({name: 'user_id'}) user!: AuthUser; @ManyToOne(() => ChatRoom, {onDelete: "CASCADE"}) @JoinColumn({name: 'room_id'}) room!: ChatRoom; @ManyToOne(() => ChatMember, { onDelete: 'SET NULL', nullable: true }) @JoinColumn({name: 'member_id'}) member!: ChatMember | null; }