20260615000001_create_conversations_table.cjs 1.1 KB

1234567891011121314151617181920212223242526272829
  1. exports.up = function (knex) {
  2. return knex.schema
  3. .createTable("conversations", (t) => {
  4. t.increments("Id");
  5. t.integer("UsuarioId").unsigned().notNullable();
  6. t.string("Title", 255).notNullable().defaultTo("Nova conversa");
  7. t.timestamp("CreatedAt").notNullable().defaultTo(knex.fn.now());
  8. t.timestamp("UpdatedAt").notNullable().defaultTo(knex.fn.now());
  9. t.foreign("UsuarioId").references("usuarios.Id").onDelete("CASCADE");
  10. t.index(["UsuarioId"]);
  11. t.index(["UpdatedAt"]);
  12. })
  13. .createTable("messages", (t) => {
  14. t.increments("Id");
  15. t.integer("ConversationId").unsigned().notNullable();
  16. t.string("Role", 10).notNullable();
  17. t.text("Content").notNullable();
  18. t.json("Sources").nullable();
  19. t.timestamp("SentAt").notNullable().defaultTo(knex.fn.now());
  20. t.foreign("ConversationId").references("conversations.Id").onDelete("CASCADE");
  21. t.index(["ConversationId"]);
  22. });
  23. };
  24. exports.down = function (knex) {
  25. return knex.schema.dropTable("messages").dropTable("conversations");
  26. };