V3__add_message_system.sql 1.7 KB

1234567891011121314151617181920212223242526272829303132
  1. CREATE TABLE IF NOT EXISTS messages (
  2. id BIGINT AUTO_INCREMENT PRIMARY KEY,
  3. sender_id INT DEFAULT NULL COMMENT 'Sender User ID',
  4. receiver_id INT NOT NULL COMMENT 'Receiver User ID',
  5. app_id INT DEFAULT NULL COMMENT 'Source Application ID',
  6. type VARCHAR(20) NOT NULL COMMENT 'MESSAGE or NOTIFICATION',
  7. content_type VARCHAR(20) NOT NULL DEFAULT 'TEXT' COMMENT 'TEXT, IMAGE, VIDEO, FILE',
  8. title VARCHAR(255) NOT NULL COMMENT 'Message Title',
  9. content TEXT NOT NULL COMMENT 'Message Content or JSON',
  10. action_url VARCHAR(1000) DEFAULT NULL COMMENT 'SSO Jump URL',
  11. action_text VARCHAR(50) DEFAULT NULL COMMENT 'Button Text',
  12. is_read TINYINT(1) NOT NULL DEFAULT 0 COMMENT 'Is Read',
  13. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  14. read_at TIMESTAMP NULL DEFAULT NULL,
  15. INDEX idx_receiver_id (receiver_id),
  16. INDEX idx_sender_id (sender_id),
  17. INDEX idx_app_id (app_id),
  18. FOREIGN KEY (receiver_id) REFERENCES users(id) ON DELETE CASCADE,
  19. FOREIGN KEY (sender_id) REFERENCES users(id) ON DELETE SET NULL,
  20. FOREIGN KEY (app_id) REFERENCES applications(id) ON DELETE SET NULL
  21. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Messages Table';
  22. CREATE TABLE IF NOT EXISTS user_devices (
  23. id INT AUTO_INCREMENT PRIMARY KEY,
  24. user_id INT NOT NULL,
  25. device_token VARCHAR(255) NOT NULL COMMENT 'Push Token',
  26. platform VARCHAR(20) NOT NULL COMMENT 'ios, android, harmony',
  27. device_name VARCHAR(100) DEFAULT NULL,
  28. last_active TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  29. UNIQUE KEY uq_user_device (user_id, device_token),
  30. FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
  31. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='User Push Devices';