01-initial.sql 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. CREATE TABLE portal (
  2. channel_id TEXT,
  3. receiver TEXT,
  4. mxid TEXT UNIQUE,
  5. name TEXT NOT NULL,
  6. topic TEXT NOT NULL,
  7. avatar TEXT NOT NULL,
  8. avatar_url TEXT,
  9. first_event_id TEXT,
  10. PRIMARY KEY (channel_id, receiver)
  11. );
  12. CREATE TABLE puppet (
  13. id TEXT PRIMARY KEY,
  14. display_name TEXT,
  15. avatar TEXT,
  16. avatar_url TEXT,
  17. enable_presence BOOLEAN NOT NULL DEFAULT true
  18. );
  19. CREATE TABLE user (
  20. mxid TEXT PRIMARY KEY,
  21. id TEXT UNIQUE,
  22. management_room TEXT,
  23. token TEXT
  24. );
  25. CREATE TABLE message (
  26. channel_id TEXT NOT NULL,
  27. receiver TEXT NOT NULL,
  28. discord_message_id TEXT NOT NULL,
  29. matrix_message_id TEXT NOT NULL UNIQUE,
  30. author_id TEXT NOT NULL,
  31. timestamp BIGINT NOT NULL,
  32. PRIMARY KEY(discord_message_id, channel_id, receiver),
  33. FOREIGN KEY(channel_id, receiver) REFERENCES portal(channel_id, receiver) ON DELETE CASCADE
  34. );
  35. CREATE TABLE reaction (
  36. channel_id TEXT NOT NULL,
  37. receiver TEXT NOT NULL,
  38. discord_message_id TEXT NOT NULL,
  39. matrix_event_id TEXT NOT NULL UNIQUE,
  40. author_id TEXT NOT NULL,
  41. matrix_name TEXT,
  42. matrix_url TEXT,
  43. discord_name TEXT,
  44. discord_id TEXT,
  45. CHECK ((discord_name IS NULL AND discord_id IS NOT NULL) OR (discord_name IS NOT NULL AND discord_id IS NULL)),
  46. UNIQUE (discord_name, discord_id, author_id, discord_message_id, channel_id, receiver),
  47. FOREIGN KEY(channel_id, receiver) REFERENCES portal(channel_id, receiver) ON DELETE CASCADE
  48. );
  49. CREATE TABLE mx_user_profile (
  50. room_id TEXT,
  51. user_id TEXT,
  52. membership TEXT NOT NULL,
  53. displayname TEXT,
  54. avatar_url TEXT,
  55. PRIMARY KEY (room_id, user_id)
  56. );
  57. CREATE TABLE mx_registrations (
  58. user_id TEXT PRIMARY KEY
  59. );
  60. CREATE TABLE mx_room_state (
  61. room_id TEXT PRIMARY KEY,
  62. power_levels TEXT
  63. );