Create new table for watchlist expiry

This table will store expiries for watchlist items, so that pages can be
automatically unwatched at a specific time.

Bug: T240094
Change-Id: I014ffccb91969e7a222a83858c55e71067b0f2af
This commit is contained in:
MusikAnimal 2020-02-07 14:15:46 -05:00
parent 7b54f5dc3d
commit 865755dbe5
8 changed files with 51 additions and 0 deletions

View file

@ -411,6 +411,9 @@ class MysqlUpdater extends DatabaseUpdater {
[ 'dropIndex', 'archive', 'usertext_timestamp', 'patch-drop-archive-usertext_timestamp.sql' ],
[ 'dropField', 'logging', 'log_user', 'patch-drop-user-fields.sql' ],
[ 'addIndex', 'user_newtalk', 'un_user_ip', 'patch-rename-mysql-user_newtalk-indexes.sql' ],
// 1.35
[ 'addTable', 'watchlist_expiry', 'patch-watchlist_expiry.sql' ],
];
}

View file

@ -658,6 +658,7 @@ class PostgresUpdater extends DatabaseUpdater {
// 1.35
[ 'addIndex', 'redirect', 'redirect_pkey', 'patch-redirect-pk.sql' ],
[ 'addTable', 'watchlist_expiry', 'patch-watchlist_expiry.sql' ],
];
}

View file

@ -278,6 +278,9 @@ class SqliteUpdater extends DatabaseUpdater {
[ 'dropField', 'filearchive', 'fa_user', 'patch-filearchive-drop-fa_user.sql' ],
[ 'dropField', 'recentchanges', 'rc_user', 'patch-recentchanges-drop-rc_user.sql' ],
[ 'dropField', 'logging', 'log_user', 'patch-logging-drop-log_user.sql' ],
// 1.35
[ 'addTable', 'watchlist_expiry', 'patch-watchlist_expiry.sql' ],
];
}

View file

@ -0,0 +1,9 @@
-- Allows setting an expiry for watchlist items.
CREATE TABLE /*_*/watchlist_expiry (
-- Key to watchlist.wl_id
we_item int unsigned NOT NULL PRIMARY KEY,
-- Expiry time
we_expiry binary(14) NOT NULL
) /*$wgDBTableOptions*/;
CREATE INDEX /*i*/we_expiry ON /*_*/watchlist_expiry (we_expiry);

View file

@ -0,0 +1,8 @@
CREATE SEQUENCE watchlist_expiry_we_item_seq;
CREATE TABLE watchlist_expiry (
we_item INTEGER PRIMARY KEY NOT NULL DEFAULT nextval('watchlist_expiry_we_item_seq'),
we_expiry TIMESTAMPTZ NOT NULL
);
CREATE INDEX we_expiry ON watchlist_expiry (we_expiry);

View file

@ -28,6 +28,7 @@ DROP SEQUENCE IF EXISTS archive_ar_id_seq CASCADE;
DROP SEQUENCE IF EXISTS externallinks_el_id_seq CASCADE;
DROP SEQUENCE IF EXISTS sites_site_id_seq CASCADE;
DROP SEQUENCE IF EXISTS change_tag_ct_id_seq CASCADE;
DROP SEQUENCE IF EXISTS watchlist_expiry_we_item_seq CASCADE;
DROP FUNCTION IF EXISTS page_deleted() CASCADE;
DROP FUNCTION IF EXISTS ts2_page_title() CASCADE;
DROP FUNCTION IF EXISTS ts2_page_text() CASCADE;
@ -837,3 +838,11 @@ CREATE TABLE site_identifiers (
);
CREATE INDEX si_site ON site_identifiers (si_site);
CREATE INDEX si_key ON site_identifiers (si_key);
CREATE SEQUENCE watchlist_expiry_we_item_seq;
CREATE TABLE watchlist_expiry (
we_item INTEGER PRIMARY KEY NOT NULL DEFAULT nextval('watchlist_expiry_we_item_seq'),
we_expiry TIMESTAMPTZ NOT NULL
);
ALTER SEQUENCE watchlist_expiry_we_item_seq OWNED BY watchlist_expiry.we_item;
CREATE INDEX we_expiry ON watchlist_expiry (we_expiry);

View file

@ -0,0 +1,9 @@
-- Allows setting an expiry for watchlist items.
CREATE TABLE /*_*/watchlist_expiry (
-- Key to watchlist.wl_id
we_item int unsigned NOT NULL PRIMARY KEY,
-- Expiry time
we_expiry binary(14) NOT NULL
) /*$wgDBTableOptions*/;
CREATE INDEX /*i*/we_expiry ON /*_*/watchlist_expiry (we_expiry);

View file

@ -1474,6 +1474,15 @@ CREATE INDEX /*i*/namespace_title ON /*_*/watchlist (wl_namespace, wl_title);
-- ApiQueryWatchlistRaw changed filter
CREATE INDEX /*i*/wl_user_notificationtimestamp ON /*_*/watchlist (wl_user, wl_notificationtimestamp);
-- Allows setting an expiry for watchlist items.
CREATE TABLE /*_*/watchlist_expiry (
-- Key to watchlist.wl_id
we_item int unsigned NOT NULL PRIMARY KEY,
-- Expiry time
we_expiry binary(14) NOT NULL
) /*$wgDBTableOptions*/;
CREATE INDEX /*i*/we_expiry ON /*_*/watchlist_expiry (we_expiry);
--
-- When using the default MySQL search backend, page titles