01-initial-revision.sql 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. -- v1: Initial revision
  2. CREATE TABLE portal (
  3. channel_id TEXT,
  4. receiver TEXT,
  5. mxid TEXT UNIQUE,
  6. name TEXT NOT NULL,
  7. topic TEXT NOT NULL,
  8. avatar TEXT NOT NULL,
  9. avatar_url TEXT,
  10. encrypted BOOLEAN NOT NULL DEFAULT false,
  11. type INT,
  12. dmuser TEXT,
  13. first_event_id TEXT,
  14. PRIMARY KEY (channel_id, receiver)
  15. );
  16. CREATE TABLE puppet (
  17. id TEXT PRIMARY KEY,
  18. display_name TEXT,
  19. avatar TEXT,
  20. avatar_url TEXT,
  21. enable_presence BOOLEAN NOT NULL DEFAULT true,
  22. enable_receipts BOOLEAN NOT NULL DEFAULT true,
  23. custom_mxid TEXT,
  24. access_token TEXT,
  25. next_batch TEXT
  26. );
  27. CREATE TABLE "user" (
  28. mxid TEXT PRIMARY KEY,
  29. id TEXT UNIQUE,
  30. management_room TEXT,
  31. token TEXT
  32. );
  33. CREATE TABLE message (
  34. channel_id TEXT NOT NULL,
  35. receiver TEXT NOT NULL,
  36. discord_message_id TEXT NOT NULL,
  37. matrix_message_id TEXT NOT NULL UNIQUE,
  38. author_id TEXT NOT NULL,
  39. timestamp BIGINT NOT NULL,
  40. PRIMARY KEY(discord_message_id, channel_id, receiver),
  41. FOREIGN KEY(channel_id, receiver) REFERENCES portal(channel_id, receiver) ON DELETE CASCADE
  42. );
  43. CREATE TABLE reaction (
  44. channel_id TEXT NOT NULL,
  45. receiver TEXT NOT NULL,
  46. discord_message_id TEXT NOT NULL,
  47. matrix_event_id TEXT NOT NULL UNIQUE,
  48. author_id TEXT NOT NULL,
  49. matrix_name TEXT,
  50. matrix_url TEXT,
  51. discord_id TEXT,
  52. UNIQUE (discord_id, author_id, discord_message_id, channel_id, receiver),
  53. FOREIGN KEY(channel_id, receiver) REFERENCES portal(channel_id, receiver) ON DELETE CASCADE
  54. );
  55. CREATE TABLE attachment (
  56. channel_id TEXT NOT NULL,
  57. receiver TEXT NOT NULL,
  58. discord_message_id TEXT NOT NULL,
  59. discord_attachment_id TEXT NOT NULL,
  60. matrix_event_id TEXT NOT NULL UNIQUE,
  61. PRIMARY KEY(discord_attachment_id, matrix_event_id),
  62. FOREIGN KEY(channel_id, receiver) REFERENCES portal(channel_id, receiver) ON DELETE CASCADE
  63. );
  64. CREATE TABLE emoji (
  65. discord_id TEXT PRIMARY KEY,
  66. discord_name TEXT,
  67. matrix_url TEXT
  68. );
  69. CREATE TABLE guild (
  70. discord_id TEXT NOT NULL,
  71. guild_id TEXT NOT NULL,
  72. guild_name TEXT NOT NULL,
  73. bridge BOOLEAN DEFAULT FALSE,
  74. PRIMARY KEY(discord_id, guild_id)
  75. );