| 1234567891011121314151617181920212223242526272829303132333435363738 |
- exports.up = function (knex) {
- return knex.schema
- .createTable("whatsapp_conversas", (t) => {
- t.increments("Id").primary();
- t.string("Telefone", 30).notNullable();
- t.string("NomeContato", 255).nullable();
- t.integer("AtendenteId").unsigned().nullable();
- t.string("Status", 20).notNullable().defaultTo("aberta");
- t.timestamp("UltimaMensagemEm").nullable();
- t.timestamp("CreatedAt").notNullable().defaultTo(knex.fn.now());
- t.timestamp("UpdatedAt").notNullable().defaultTo(knex.fn.now());
- t.foreign("AtendenteId").references("usuarios.Id").onDelete("SET NULL");
- t.unique(["Telefone"]);
- t.index(["Status"]);
- t.index(["UltimaMensagemEm"]);
- })
- .createTable("whatsapp_mensagens", (t) => {
- t.increments("Id").primary();
- t.integer("ConversaId").unsigned().notNullable();
- t.string("Direcao", 10).notNullable(); // entrada (cliente) | saida (atendente)
- t.text("Corpo").notNullable();
- t.string("WhatsappMessageId", 100).nullable(); // id da mensagem na Meta; usado para não duplicar reenvios de webhook
- t.timestamp("Timestamp").notNullable();
- t.timestamp("CreatedAt").notNullable().defaultTo(knex.fn.now());
- t.foreign("ConversaId").references("whatsapp_conversas.Id").onDelete("CASCADE");
- t.unique(["WhatsappMessageId"]);
- t.index(["ConversaId"]);
- t.index(["Timestamp"]);
- });
- };
- exports.down = function (knex) {
- return knex.schema
- .dropTable("whatsapp_mensagens")
- .dropTable("whatsapp_conversas");
- };
|