mediawiki-extensions-Echo/echo.sql
bsitu 6a3624b0e4 Add web bundling function to Echo notification
* add web bundling feature
* unify event_timestamp with notification_timestamp
* remove echo_subscription
* update article_link to page_link notification with new logic
* remove duplicated function from MWDbEchoEmailBatch since it's defined in parent class

Change-Id: I2fa91c44edb020209b468fe13f894d9db3732e69
2013-04-04 10:53:46 -07:00

55 lines
3.1 KiB
SQL

-- Database Schema for Echo notification system
CREATE TABLE /*_*/echo_subscription (
sub_user int unsigned not null,
sub_event_type varchar(64) binary not null,
sub_page_namespace int unsigned null,
sub_page_title varchar(255) binary null,
sub_notify_type varchar(64) binary not null,
sub_enabled tinyint(1) unsigned not null default 1
) /*$wgDBTableOptions*/;
CREATE UNIQUE INDEX /*i*/user_subscriptions ON /*_*/echo_subscription (sub_user,sub_event_type,sub_page_namespace,sub_page_title,sub_notify_type,sub_enabled);
CREATE INDEX /*i*/page_subscriptions ON /*_*/echo_subscription (sub_page_namespace,sub_page_title,sub_event_type,sub_user);
CREATE TABLE /*_*/echo_event (
event_id int unsigned not null primary key auto_increment,
event_timestamp binary(14) not null,
event_type varchar(64) binary not null,
event_variant varchar(64) binary null,
event_agent_id int unsigned null, -- The user who triggered it, if any
event_agent_ip varchar(39) binary null, -- IP address who triggered it, if any
event_page_namespace int unsigned null,
event_page_title varchar(255) binary null,
event_extra BLOB NULL
) /*$wgDBTableOptions*/;
CREATE INDEX /*i*/event_type ON /*_*/echo_event (event_type);
CREATE TABLE /*_*/echo_notification (
notification_event int unsigned not null,
notification_user int unsigned not null,
notification_timestamp binary(14) not null,
notification_read_timestamp binary(14) null,
notification_bundle_base boolean not null default 1,
notification_bundle_hash varchar(32) binary not null, -- The hash for bundling notifications regardless of timestamp
notification_bundle_display_hash varchar(32) binary not null -- The hash for displaying bundle notifications with regard to timestamp, this is is a subset of notification_bundle_hash
) /*$wgDBTableOptions*/;
CREATE INDEX /*i*/user_timestamp ON /*_*/echo_notification (notification_user,notification_timestamp);
CREATE UNIQUE INDEX /*i*/user_event ON /*_*/echo_notification (notification_user,notification_event);
CREATE INDEX /*i*/echo_notification_user_base_read_timestamp ON /*_*/echo_notification (notification_user, notification_bundle_base, notification_read_timestamp);
CREATE INDEX /*i*/echo_notification_user_base_timestamp ON /*_*/echo_notification (notification_user, notification_bundle_base, notification_timestamp, notification_event);
CREATE INDEX /*i*/echo_notification_user_hash_timestamp ON /*_*/echo_notification (notification_user, notification_bundle_hash, notification_timestamp);
CREATE INDEX /*i*/echo_notification_user_hash_base_timestamp ON /*_*/echo_notification (notification_user, notification_bundle_display_hash, notification_bundle_base, notification_timestamp);
CREATE TABLE /*_*/echo_email_batch (
eeb_id int unsigned not null primary key auto_increment,
eeb_user_id int unsigned not null,
eeb_event_priority tinyint unsigned not null default 10, -- event priority
eeb_event_id int unsigned not null
) /*$wgDBTableOptions*/;
CREATE UNIQUE INDEX /*i*/echo_email_batch_user_event ON /*_*/echo_email_batch (eeb_user_id,eeb_event_id);
CREATE UNIQUE INDEX /*i*/echo_email_batch_user_priority_event ON /*_*/echo_email_batch (eeb_user_id,eeb_event_priority,eeb_event_id);