-- This file is automatically generated using maintenance/generateSchemaSql.php.
-- Source: db_patches/tables.json
-- Do not modify this file directly.
-- See https://www.mediawiki.org/wiki/Manual:Schema_changes
CREATE TABLE abuse_filter (
  af_id BIGSERIAL NOT NULL,
  af_pattern TEXT NOT NULL,
  af_actor BIGINT NOT NULL,
  af_timestamp TIMESTAMPTZ NOT NULL,
  af_enabled SMALLINT DEFAULT 1 NOT NULL,
  af_comments TEXT DEFAULT NULL,
  af_public_comments TEXT DEFAULT NULL,
  af_hidden SMALLINT DEFAULT 0 NOT NULL,
  af_hit_count BIGINT DEFAULT 0 NOT NULL,
  af_throttled SMALLINT DEFAULT 0 NOT NULL,
  af_deleted SMALLINT DEFAULT 0 NOT NULL,
  af_actions VARCHAR(255) DEFAULT '' NOT NULL,
  af_global SMALLINT DEFAULT 0 NOT NULL,
  af_group TEXT DEFAULT 'default' NOT NULL,
  PRIMARY KEY(af_id)
);

CREATE INDEX af_actor ON abuse_filter (af_actor);

CREATE INDEX af_group_enabled ON abuse_filter (af_group, af_enabled, af_id);


CREATE TABLE abuse_filter_action (
  afa_filter BIGINT NOT NULL,
  afa_consequence VARCHAR(255) NOT NULL,
  afa_parameters TEXT NOT NULL,
  PRIMARY KEY(afa_filter, afa_consequence)
);

CREATE INDEX afa_consequence ON abuse_filter_action (afa_consequence);


CREATE TABLE abuse_filter_log (
  afl_id BIGSERIAL NOT NULL,
  afl_global SMALLINT NOT NULL,
  afl_filter_id BIGINT NOT NULL,
  afl_user BIGINT NOT NULL,
  afl_user_text TEXT NOT NULL,
  afl_ip_hex VARCHAR(255) NOT NULL,
  afl_action TEXT NOT NULL,
  afl_actions TEXT NOT NULL,
  afl_var_dump TEXT NOT NULL,
  afl_timestamp TIMESTAMPTZ NOT NULL,
  afl_namespace INT NOT NULL,
  afl_title TEXT NOT NULL,
  afl_wiki TEXT DEFAULT NULL,
  afl_deleted SMALLINT DEFAULT 0 NOT NULL,
  afl_rev_id INT DEFAULT NULL,
  PRIMARY KEY(afl_id)
);

CREATE INDEX afl_filter_timestamp_full ON abuse_filter_log (
  afl_global, afl_filter_id, afl_timestamp
);

CREATE INDEX afl_user_timestamp ON abuse_filter_log (
  afl_user, afl_user_text, afl_timestamp
);

CREATE INDEX afl_timestamp ON abuse_filter_log (afl_timestamp);

CREATE INDEX afl_page_timestamp ON abuse_filter_log (
  afl_namespace, afl_title, afl_timestamp
);

CREATE INDEX afl_ip_hex_timestamp ON abuse_filter_log (afl_ip_hex, afl_timestamp);

CREATE INDEX afl_rev_id ON abuse_filter_log (afl_rev_id);

CREATE INDEX afl_wiki_timestamp ON abuse_filter_log (afl_wiki, afl_timestamp);

CREATE INDEX afl_var_dump_timestamp ON abuse_filter_log (afl_var_dump, afl_timestamp);


CREATE TABLE abuse_filter_history (
  afh_id BIGSERIAL NOT NULL,
  afh_filter BIGINT NOT NULL,
  afh_actor BIGINT NOT NULL,
  afh_timestamp TIMESTAMPTZ NOT NULL,
  afh_pattern TEXT NOT NULL,
  afh_comments TEXT NOT NULL,
  afh_flags TEXT NOT NULL,
  afh_public_comments TEXT DEFAULT NULL,
  afh_actions TEXT DEFAULT NULL,
  afh_deleted SMALLINT DEFAULT 0 NOT NULL,
  afh_changed_fields VARCHAR(255) DEFAULT '' NOT NULL,
  afh_group TEXT DEFAULT NULL,
  PRIMARY KEY(afh_id)
);

CREATE INDEX afh_filter ON abuse_filter_history (afh_filter);

CREATE INDEX afh_actor ON abuse_filter_history (afh_actor);

CREATE INDEX afh_timestamp ON abuse_filter_history (afh_timestamp);
