import { Table, Column, CreatedAt, UpdatedAt, Model, DataType, PrimaryKey, Default, BelongsTo, ForeignKey } from "sequelize-typescript"; import Contact from "./Contact"; import Ticket from "./Ticket"; @Table class Message extends Model { @PrimaryKey @Column id: string; @Default(0) @Column ack: number; @Default(false) @Column read: boolean; @Default(false) @Column fromMe: boolean; @Column(DataType.TEXT) body: string; @Column phoneNumberId: string; @Column(DataType.STRING) get mediaUrl(): string | null { if (this.getDataValue("mediaUrl")) { return `${process.env.BACKEND_URL}:${ process.env.PROXY_PORT }/public/${this.getDataValue("mediaUrl")}`; } return null; } @Column mediaType: string; @Default(false) @Column isDeleted: boolean; @CreatedAt @Column(DataType.DATE(6)) createdAt: Date; @UpdatedAt @Column(DataType.DATE(6)) updatedAt: Date; @ForeignKey(() => Message) @Column quotedMsgId: string; @BelongsTo(() => Message, "quotedMsgId") quotedMsg: Message; @ForeignKey(() => Ticket) @Column ticketId: number; @BelongsTo(() => Ticket) ticket: Ticket; @ForeignKey(() => Contact) @Column contactId: number; @BelongsTo(() => Contact, "contactId") contact: Contact; } export default Message;