mirror of
https://github.com/cheveguerra/whaticket-community.git
synced 2026-04-18 19:59:20 +00:00
All models using classes and sequelize migrations
This commit is contained in:
@@ -1,19 +1,24 @@
|
||||
const Sequelize = require("sequelize");
|
||||
|
||||
const sequelize = require("../database");
|
||||
class Contact extends Sequelize.Model {
|
||||
static init(sequelize) {
|
||||
super.init(
|
||||
{
|
||||
name: { type: Sequelize.STRING },
|
||||
number: { type: Sequelize.STRING },
|
||||
profilePicUrl: { type: Sequelize.STRING },
|
||||
},
|
||||
{
|
||||
sequelize,
|
||||
}
|
||||
);
|
||||
|
||||
const Message = require("./Message");
|
||||
return this;
|
||||
}
|
||||
|
||||
const Contact = sequelize.define("contact", {
|
||||
name: { type: Sequelize.STRING(100), allowNull: false },
|
||||
number: { type: Sequelize.STRING(15), allowNull: false },
|
||||
profilePicUrl: { type: Sequelize.STRING(200) },
|
||||
lastMessage: { type: Sequelize.TEXT },
|
||||
});
|
||||
|
||||
Contact.hasMany(Message, {
|
||||
onDelete: "CASCADE",
|
||||
onUpdate: "RESTRICT",
|
||||
});
|
||||
static associate(models) {
|
||||
this.hasMany(models.Ticket, { foreignKey: "contactId" });
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Contact;
|
||||
|
||||
@@ -1,22 +1,27 @@
|
||||
const Sequelize = require("sequelize");
|
||||
const sequelize = require("../database");
|
||||
|
||||
const Message = sequelize.define("message", {
|
||||
id: {
|
||||
type: Sequelize.STRING(50),
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
},
|
||||
createdAt: {
|
||||
allowNull: false,
|
||||
type: Sequelize.DATE(6),
|
||||
},
|
||||
userId: { type: Sequelize.INTEGER, defaultValue: 0 },
|
||||
ack: { type: Sequelize.INTEGER, defaultValue: 0 },
|
||||
messageBody: { type: Sequelize.TEXT, allowNull: false },
|
||||
read: { type: Sequelize.BOOLEAN, defaultValue: false },
|
||||
mediaUrl: { type: Sequelize.STRING(250) },
|
||||
mediaType: { type: Sequelize.STRING(250) },
|
||||
});
|
||||
class Message extends Sequelize.Model {
|
||||
static init(sequelize) {
|
||||
super.init(
|
||||
{
|
||||
ack: { type: Sequelize.INTEGER, defaultValue: 0 },
|
||||
read: { type: Sequelize.BOOLEAN, defaultValue: false },
|
||||
body: { type: Sequelize.TEXT },
|
||||
mediaUrl: { type: Sequelize.STRING },
|
||||
mediaType: { type: Sequelize.STRING },
|
||||
},
|
||||
{
|
||||
sequelize,
|
||||
}
|
||||
);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
static associate(models) {
|
||||
this.belongsTo(models.Ticket, { foreignKey: "ticketId" });
|
||||
this.belongsTo(models.User, { foreignKey: "userId" });
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Message;
|
||||
|
||||
25
backend/src/models/Ticket.js
Normal file
25
backend/src/models/Ticket.js
Normal file
@@ -0,0 +1,25 @@
|
||||
const Sequelize = require("sequelize");
|
||||
|
||||
class Ticket extends Sequelize.Model {
|
||||
static init(sequelize) {
|
||||
super.init(
|
||||
{
|
||||
status: { type: Sequelize.STRING, defaultValue: "pending" },
|
||||
lastMessage: { type: Sequelize.STRING },
|
||||
},
|
||||
{
|
||||
sequelize,
|
||||
}
|
||||
);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
static associate(models) {
|
||||
this.belongsTo(models.Contact, { foreignKey: "contactId" });
|
||||
this.belongsTo(models.User, { foreignKey: "userId" });
|
||||
this.hasMany(models.Message, { foreignKey: "ticketId" });
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Ticket;
|
||||
@@ -1,13 +1,22 @@
|
||||
const Sequelize = require("sequelize");
|
||||
|
||||
const sequelize = require("../database");
|
||||
class Whatsapp extends Sequelize.Model {
|
||||
static init(sequelize) {
|
||||
super.init(
|
||||
{
|
||||
session: { type: Sequelize.TEXT },
|
||||
qrcode: { type: Sequelize.TEXT },
|
||||
status: { type: Sequelize.STRING },
|
||||
battery: { type: Sequelize.STRING },
|
||||
plugged: { type: Sequelize.BOOLEAN },
|
||||
},
|
||||
{
|
||||
sequelize,
|
||||
}
|
||||
);
|
||||
|
||||
const Whatsapp = sequelize.define("whatsapp", {
|
||||
session: { type: Sequelize.TEXT() },
|
||||
qrcode: { type: Sequelize.TEXT() },
|
||||
status: { type: Sequelize.STRING(60) },
|
||||
battery: { type: Sequelize.STRING(20) },
|
||||
plugged: { type: Sequelize.BOOLEAN() },
|
||||
});
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Whatsapp;
|
||||
|
||||
Reference in New Issue
Block a user