1737800000000-AddKnowledgeBaseEnhancements.ts 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { MigrationInterface, QueryRunner } from 'typeorm';
  2. export class AddKnowledgeBaseEnhancements1737800000000 implements MigrationInterface {
  3. name = 'AddKnowledgeBaseEnhancements1737800000000';
  4. public async up(queryRunner: QueryRunner): Promise<void> {
  5. await queryRunner.query(`
  6. CREATE TABLE "knowledge_groups" (
  7. "id" varchar PRIMARY KEY NOT NULL,
  8. "name" varchar NOT NULL,
  9. "description" varchar,
  10. "color" varchar NOT NULL DEFAULT '#3B82F6',
  11. "user_id" varchar NOT NULL,
  12. "created_at" datetime NOT NULL DEFAULT (datetime('now')),
  13. "updated_at" datetime NOT NULL DEFAULT (datetime('now'))
  14. )
  15. `);
  16. await queryRunner.query(`
  17. CREATE TABLE "knowledge_base_groups" (
  18. "knowledge_base_id" varchar NOT NULL,
  19. "group_id" varchar NOT NULL,
  20. "created_at" datetime NOT NULL DEFAULT (datetime('now')),
  21. PRIMARY KEY ("knowledge_base_id", "group_id"),
  22. FOREIGN KEY ("knowledge_base_id") REFERENCES "knowledge_base" ("id") ON DELETE CASCADE,
  23. FOREIGN KEY ("group_id") REFERENCES "knowledge_groups" ("id") ON DELETE CASCADE
  24. )
  25. `);
  26. await queryRunner.query(`
  27. CREATE TABLE "search_history" (
  28. "id" varchar PRIMARY KEY NOT NULL,
  29. "user_id" varchar NOT NULL,
  30. "title" varchar NOT NULL,
  31. "selected_groups" text,
  32. "created_at" datetime NOT NULL DEFAULT (datetime('now')),
  33. "updated_at" datetime NOT NULL DEFAULT (datetime('now'))
  34. )
  35. `);
  36. await queryRunner.query(`
  37. CREATE TABLE "chat_messages" (
  38. "id" varchar PRIMARY KEY NOT NULL,
  39. "search_history_id" varchar NOT NULL,
  40. "role" varchar NOT NULL CHECK ("role" IN ('user', 'assistant')),
  41. "content" text NOT NULL,
  42. "sources" text,
  43. "created_at" datetime NOT NULL DEFAULT (datetime('now')),
  44. FOREIGN KEY ("search_history_id") REFERENCES "search_history" ("id") ON DELETE CASCADE
  45. )
  46. `);
  47. await queryRunner.query(`
  48. ALTER TABLE "knowledge_base" ADD COLUMN "pdf_path" varchar
  49. `);
  50. await queryRunner.query(`CREATE INDEX "IDX_knowledge_groups_user_id" ON "knowledge_groups" ("user_id")`);
  51. await queryRunner.query(`CREATE INDEX "IDX_search_history_user_id" ON "search_history" ("user_id")`);
  52. await queryRunner.query(`CREATE INDEX "IDX_chat_messages_search_history_id" ON "chat_messages" ("search_history_id")`);
  53. }
  54. public async down(queryRunner: QueryRunner): Promise<void> {
  55. await queryRunner.query(`DROP INDEX "IDX_chat_messages_search_history_id"`);
  56. await queryRunner.query(`DROP INDEX "IDX_search_history_user_id"`);
  57. await queryRunner.query(`DROP INDEX "IDX_knowledge_groups_user_id"`);
  58. await queryRunner.query(`ALTER TABLE "knowledge_base" DROP COLUMN "pdf_path"`);
  59. await queryRunner.query(`DROP TABLE "chat_messages"`);
  60. await queryRunner.query(`DROP TABLE "search_history"`);
  61. await queryRunner.query(`DROP TABLE "knowledge_base_groups"`);
  62. await queryRunner.query(`DROP TABLE "knowledge_groups"`);
  63. }
  64. }