0038_drop_web_chat.down.sql 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. -- Rollback: recreate Web API chat room tables
  2. CREATE TABLE IF NOT EXISTS web_chat_rooms (
  3. room_id VARCHAR(255) PRIMARY KEY,
  4. room_name VARCHAR(255) NOT NULL,
  5. description TEXT,
  6. room_type VARCHAR(50) DEFAULT 'userCreated',
  7. category_id VARCHAR(50),
  8. creator_screen_name VARCHAR(16) NOT NULL,
  9. created_at INTEGER NOT NULL,
  10. closed_at INTEGER,
  11. max_participants INTEGER DEFAULT 100
  12. );
  13. CREATE INDEX IF NOT EXISTS idx_web_chat_rooms_name ON web_chat_rooms(room_name);
  14. CREATE INDEX IF NOT EXISTS idx_web_chat_rooms_creator ON web_chat_rooms(creator_screen_name);
  15. CREATE INDEX IF NOT EXISTS idx_web_chat_rooms_created ON web_chat_rooms(created_at);
  16. CREATE INDEX IF NOT EXISTS idx_web_chat_rooms_closed ON web_chat_rooms(closed_at);
  17. CREATE TABLE IF NOT EXISTS web_chat_sessions (
  18. chat_sid VARCHAR(255) PRIMARY KEY,
  19. aimsid VARCHAR(255) NOT NULL,
  20. room_id VARCHAR(255) NOT NULL,
  21. screen_name VARCHAR(16) NOT NULL,
  22. instance_id INTEGER NOT NULL,
  23. joined_at INTEGER NOT NULL,
  24. left_at INTEGER,
  25. FOREIGN KEY (room_id) REFERENCES web_chat_rooms(room_id) ON DELETE CASCADE
  26. );
  27. CREATE INDEX IF NOT EXISTS idx_web_chat_sessions_aimsid ON web_chat_sessions(aimsid);
  28. CREATE INDEX IF NOT EXISTS idx_web_chat_sessions_room ON web_chat_sessions(room_id);
  29. CREATE INDEX IF NOT EXISTS idx_web_chat_sessions_user ON web_chat_sessions(screen_name);
  30. CREATE INDEX IF NOT EXISTS idx_web_chat_sessions_joined ON web_chat_sessions(joined_at);
  31. CREATE TABLE IF NOT EXISTS web_chat_messages (
  32. id INTEGER PRIMARY KEY AUTOINCREMENT,
  33. room_id VARCHAR(255) NOT NULL,
  34. screen_name VARCHAR(16) NOT NULL,
  35. message TEXT NOT NULL,
  36. whisper_target VARCHAR(16),
  37. timestamp INTEGER NOT NULL,
  38. FOREIGN KEY (room_id) REFERENCES web_chat_rooms(room_id) ON DELETE CASCADE
  39. );
  40. CREATE INDEX IF NOT EXISTS idx_web_chat_messages_room ON web_chat_messages(room_id);
  41. CREATE INDEX IF NOT EXISTS idx_web_chat_messages_timestamp ON web_chat_messages(timestamp);
  42. CREATE INDEX IF NOT EXISTS idx_web_chat_messages_user ON web_chat_messages(screen_name);
  43. CREATE TABLE IF NOT EXISTS web_chat_participants (
  44. room_id VARCHAR(255) NOT NULL,
  45. screen_name VARCHAR(16) NOT NULL,
  46. chat_sid VARCHAR(255) NOT NULL,
  47. joined_at INTEGER NOT NULL,
  48. typing_status VARCHAR(20) DEFAULT 'none',
  49. typing_updated_at INTEGER,
  50. PRIMARY KEY (room_id, screen_name),
  51. FOREIGN KEY (room_id) REFERENCES web_chat_rooms(room_id) ON DELETE CASCADE
  52. );
  53. CREATE INDEX IF NOT EXISTS idx_web_chat_participants_room ON web_chat_participants(room_id);
  54. CREATE INDEX IF NOT EXISTS idx_web_chat_participants_user ON web_chat_participants(screen_name);