changed all models to typescript

This commit is contained in:
canove
2020-09-19 08:15:47 -03:00
parent b04c0b878e
commit 99fa2cea61
22 changed files with 629 additions and 162 deletions

View File

@@ -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;

View 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;

View 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;

View File

@@ -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

View File

@@ -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;

View File

@@ -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> => {

View 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;