88 lines
1.3 KiB
TypeScript
88 lines
1.3 KiB
TypeScript
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<Message> {
|
|
@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;
|