All models using classes and sequelize migrations

This commit is contained in:
canove
2020-07-17 14:29:10 -03:00
parent a41f7e63ac
commit 9687a1ce13
22 changed files with 578 additions and 191 deletions

View File

@@ -34,6 +34,6 @@ module.exports = {
},
down: queryInterface => {
return queryInterface.dropTable("users");
return queryInterface.dropTable("Users");
},
};

View File

@@ -0,0 +1,38 @@
"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable("Contacts", {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true,
allowNull: false,
},
name: {
type: Sequelize.STRING,
allowNull: false,
},
number: {
type: Sequelize.STRING,
allowNull: false,
unique: true,
},
profilePicUrl: {
type: Sequelize.STRING,
},
createdAt: {
type: Sequelize.DATE,
allowNull: false,
},
updatedAt: {
type: Sequelize.DATE,
allowNull: false,
},
});
},
down: queryInterface => {
return queryInterface.dropTable("Contacts");
},
};

View File

@@ -0,0 +1,46 @@
"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable("Tickets", {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true,
allowNull: false,
},
status: {
type: Sequelize.STRING,
defaultValue: "pending",
allowNull: false,
},
lastMessage: {
type: Sequelize.STRING,
},
contactId: {
type: Sequelize.INTEGER,
references: { model: "Contacts", key: "id" },
onUpdate: "CASCADE",
onDelete: "CASCADE",
},
userId: {
type: Sequelize.INTEGER,
references: { model: "Users", key: "id" },
onUpdate: "CASCADE",
onDelete: "SET NULL",
},
createdAt: {
type: Sequelize.DATE(6),
allowNull: false,
},
updatedAt: {
type: Sequelize.DATE(6),
allowNull: false,
},
});
},
down: queryInterface => {
return queryInterface.dropTable("Tickets");
},
};

View File

@@ -0,0 +1,58 @@
"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable("Messages", {
id: {
type: Sequelize.STRING,
primaryKey: true,
allowNull: false,
},
body: {
type: Sequelize.TEXT,
allowNull: false,
},
ack: {
type: Sequelize.INTEGER,
allowNull: false,
defaultValue: 0,
},
read: {
type: Sequelize.BOOLEAN,
allowNull: false,
defaultValue: false,
},
mediaType: {
type: Sequelize.STRING,
},
mediaUrl: {
type: Sequelize.STRING,
},
userId: {
type: Sequelize.INTEGER,
references: { model: "Users", key: "id" },
onUpdate: "CASCADE",
onDelete: "SET NULL",
},
ticketId: {
type: Sequelize.INTEGER,
references: { model: "Tickets", key: "id" },
onUpdate: "CASCADE",
onDelete: "CASCADE",
allowNull: false,
},
createdAt: {
type: Sequelize.DATE(6),
allowNull: false,
},
updatedAt: {
type: Sequelize.DATE(6),
allowNull: false,
},
});
},
down: queryInterface => {
return queryInterface.dropTable("Messages");
},
};

View File

@@ -0,0 +1,41 @@
"use strict";
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable("Whatsapps", {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true,
allowNull: false,
},
session: {
type: Sequelize.TEXT,
},
qrcode: {
type: Sequelize.TEXT,
},
status: {
type: Sequelize.STRING,
},
battery: {
type: Sequelize.STRING,
},
plugged: {
type: Sequelize.BOOLEAN,
},
createdAt: {
type: Sequelize.DATE,
allowNull: false,
},
updatedAt: {
type: Sequelize.DATE,
allowNull: false,
},
});
},
down: queryInterface => {
return queryInterface.dropTable("Whatsapps");
},
};