mirror of
https://github.com/cheveguerra/whaticket-community.git
synced 2026-04-18 19:59:20 +00:00
changed all models to typescript
This commit is contained in:
@@ -4,13 +4,15 @@ import {
|
||||
CreatedAt,
|
||||
UpdatedAt,
|
||||
Model,
|
||||
DataType,
|
||||
PrimaryKey,
|
||||
AutoIncrement,
|
||||
AllowNull,
|
||||
Unique,
|
||||
Default
|
||||
Default,
|
||||
HasMany
|
||||
} from "sequelize-typescript";
|
||||
import ContactCustomField from "./ContactCustomField";
|
||||
import Ticket from "./Ticket";
|
||||
|
||||
@Table
|
||||
class Contact extends Model<Contact> {
|
||||
@@ -19,7 +21,7 @@ class Contact extends Model<Contact> {
|
||||
@Column
|
||||
id: number;
|
||||
|
||||
@Column(DataType.STRING)
|
||||
@Column
|
||||
name: string;
|
||||
|
||||
@AllowNull(false)
|
||||
@@ -40,6 +42,12 @@ class Contact extends Model<Contact> {
|
||||
|
||||
@UpdatedAt
|
||||
updatedAt: Date;
|
||||
|
||||
@HasMany(() => Ticket)
|
||||
tickets: Ticket[];
|
||||
|
||||
@HasMany(() => ContactCustomField)
|
||||
extraInfo: ContactCustomField[];
|
||||
}
|
||||
|
||||
export default Contact;
|
||||
|
||||
41
backend/src/models/ContactCustomField.ts
Normal file
41
backend/src/models/ContactCustomField.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import {
|
||||
Table,
|
||||
Column,
|
||||
CreatedAt,
|
||||
UpdatedAt,
|
||||
Model,
|
||||
PrimaryKey,
|
||||
AutoIncrement,
|
||||
ForeignKey,
|
||||
BelongsTo
|
||||
} from "sequelize-typescript";
|
||||
import Contact from "./Contact";
|
||||
|
||||
@Table
|
||||
class ContactCustomField extends Model<ContactCustomField> {
|
||||
@PrimaryKey
|
||||
@AutoIncrement
|
||||
@Column
|
||||
id: number;
|
||||
|
||||
@Column
|
||||
name: string;
|
||||
|
||||
@Column
|
||||
value: string;
|
||||
|
||||
@ForeignKey(() => Contact)
|
||||
@Column
|
||||
contactId: number;
|
||||
|
||||
@BelongsTo(() => Contact)
|
||||
contact: Contact;
|
||||
|
||||
@CreatedAt
|
||||
createdAt: Date;
|
||||
|
||||
@UpdatedAt
|
||||
updatedAt: Date;
|
||||
}
|
||||
|
||||
export default ContactCustomField;
|
||||
60
backend/src/models/Message.ts
Normal file
60
backend/src/models/Message.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
import {
|
||||
Table,
|
||||
Column,
|
||||
CreatedAt,
|
||||
UpdatedAt,
|
||||
Model,
|
||||
DataType,
|
||||
PrimaryKey,
|
||||
AutoIncrement,
|
||||
Default,
|
||||
BelongsTo,
|
||||
ForeignKey
|
||||
} from "sequelize-typescript";
|
||||
import Ticket from "./Ticket";
|
||||
|
||||
@Table
|
||||
class Message extends Model<Message> {
|
||||
@PrimaryKey
|
||||
@AutoIncrement
|
||||
@Column
|
||||
id: number;
|
||||
|
||||
@Default(0)
|
||||
@Column
|
||||
ack: number;
|
||||
|
||||
@Default(false)
|
||||
@Column
|
||||
read: boolean;
|
||||
|
||||
@Default(false)
|
||||
@Column
|
||||
fromMe: boolean;
|
||||
|
||||
@Column(DataType.TEXT)
|
||||
body: string;
|
||||
|
||||
@Column
|
||||
mediaUrl: string;
|
||||
|
||||
@Column
|
||||
mediaType: string;
|
||||
|
||||
@CreatedAt
|
||||
@Column(DataType.DATE(6))
|
||||
createdAt: Date;
|
||||
|
||||
@UpdatedAt
|
||||
@Column(DataType.DATE(6))
|
||||
updatedAt: Date;
|
||||
|
||||
@ForeignKey(() => Ticket)
|
||||
@Column
|
||||
ticketId: number;
|
||||
|
||||
@BelongsTo(() => Ticket)
|
||||
ticket: Ticket;
|
||||
}
|
||||
|
||||
export default Message;
|
||||
@@ -4,17 +4,16 @@ import {
|
||||
CreatedAt,
|
||||
UpdatedAt,
|
||||
Model,
|
||||
DataType,
|
||||
PrimaryKey
|
||||
} from "sequelize-typescript";
|
||||
|
||||
@Table
|
||||
class Setting extends Model<Setting> {
|
||||
@PrimaryKey
|
||||
@Column(DataType.STRING)
|
||||
@Column
|
||||
key: string;
|
||||
|
||||
@Column(DataType.STRING)
|
||||
@Column
|
||||
value: string;
|
||||
|
||||
@CreatedAt
|
||||
|
||||
@@ -5,25 +5,32 @@ import {
|
||||
UpdatedAt,
|
||||
Model,
|
||||
DataType,
|
||||
PrimaryKey
|
||||
PrimaryKey,
|
||||
ForeignKey,
|
||||
BelongsTo,
|
||||
HasMany,
|
||||
AutoIncrement
|
||||
} from "sequelize-typescript";
|
||||
|
||||
import Contact from "./Contact";
|
||||
import Message from "./Message";
|
||||
import User from "./User";
|
||||
import Whatsapp from "./Whatsapp";
|
||||
|
||||
@Table
|
||||
class Ticket extends Model<Ticket> {
|
||||
@PrimaryKey
|
||||
@Column(DataType.NUMBER)
|
||||
@AutoIncrement
|
||||
@Column
|
||||
id: number;
|
||||
|
||||
@Column({ defaultValue: "pending" })
|
||||
status: string;
|
||||
|
||||
// @Column({ allowNull: false, unique: true })
|
||||
// userId: string;
|
||||
|
||||
@Column(DataType.VIRTUAL)
|
||||
unreadMessages: string;
|
||||
|
||||
@Column(DataType.STRING)
|
||||
@Column
|
||||
lastMessage: string;
|
||||
|
||||
@CreatedAt
|
||||
@@ -31,6 +38,30 @@ class Ticket extends Model<Ticket> {
|
||||
|
||||
@UpdatedAt
|
||||
updatedAt: Date;
|
||||
|
||||
@ForeignKey(() => User)
|
||||
@Column
|
||||
userId: number;
|
||||
|
||||
@BelongsTo(() => User)
|
||||
user: User;
|
||||
|
||||
@ForeignKey(() => Contact)
|
||||
@Column
|
||||
contactId: number;
|
||||
|
||||
@BelongsTo(() => Contact)
|
||||
contact: Contact;
|
||||
|
||||
@ForeignKey(() => Whatsapp)
|
||||
@Column
|
||||
whatsappId: number;
|
||||
|
||||
@BelongsTo(() => Whatsapp)
|
||||
whatsapp: Whatsapp;
|
||||
|
||||
@HasMany(() => Message)
|
||||
messages: Message[];
|
||||
}
|
||||
|
||||
export default Ticket;
|
||||
|
||||
@@ -9,9 +9,11 @@ import {
|
||||
BeforeUpdate,
|
||||
PrimaryKey,
|
||||
AutoIncrement,
|
||||
Default
|
||||
Default,
|
||||
HasMany
|
||||
} from "sequelize-typescript";
|
||||
import { hash, compare } from "bcryptjs";
|
||||
import Ticket from "./Ticket";
|
||||
|
||||
@Table
|
||||
class User extends Model<User> {
|
||||
@@ -42,6 +44,9 @@ class User extends Model<User> {
|
||||
@UpdatedAt
|
||||
updatedAt: Date;
|
||||
|
||||
@HasMany(() => Ticket)
|
||||
tickets: Ticket[];
|
||||
|
||||
@BeforeUpdate
|
||||
@BeforeCreate
|
||||
static hashPassword = async (instance: User): Promise<void> => {
|
||||
|
||||
53
backend/src/models/Whatsapp.ts
Normal file
53
backend/src/models/Whatsapp.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
import {
|
||||
Table,
|
||||
Column,
|
||||
CreatedAt,
|
||||
UpdatedAt,
|
||||
Model,
|
||||
DataType,
|
||||
PrimaryKey,
|
||||
AutoIncrement,
|
||||
Default,
|
||||
AllowNull,
|
||||
HasMany
|
||||
} from "sequelize-typescript";
|
||||
import Ticket from "./Ticket";
|
||||
|
||||
@Table
|
||||
class Whatsapp extends Model<Whatsapp> {
|
||||
@PrimaryKey
|
||||
@AutoIncrement
|
||||
@Column
|
||||
id: number;
|
||||
|
||||
@Column(DataType.TEXT)
|
||||
session: string;
|
||||
|
||||
@Column(DataType.TEXT)
|
||||
qrcode: string;
|
||||
|
||||
@Column
|
||||
status: string;
|
||||
|
||||
@Column
|
||||
battery: string;
|
||||
|
||||
@Column
|
||||
plugged: boolean;
|
||||
|
||||
@Default(false)
|
||||
@AllowNull
|
||||
@Column
|
||||
default: boolean;
|
||||
|
||||
@CreatedAt
|
||||
createdAt: Date;
|
||||
|
||||
@UpdatedAt
|
||||
updatedAt: Date;
|
||||
|
||||
@HasMany(() => Ticket)
|
||||
tickets: Ticket[];
|
||||
}
|
||||
|
||||
export default Whatsapp;
|
||||
Reference in New Issue
Block a user