minetest-verbana/schema.sql

150 lines
5.1 KiB
MySQL
Raw Permalink Normal View History

2019-07-31 06:38:24 -07:00
BEGIN EXCLUSIVE TRANSACTION;
CREATE TABLE version (version INTEGER);
INSERT INTO version (version) VALUES (1);
2019-06-11 15:37:57 -07:00
-- PLAYER
2019-07-31 06:38:24 -07:00
CREATE TABLE player_status (
2019-06-11 15:37:57 -07:00
id INTEGER PRIMARY KEY
, name TEXT NOT NULL
);
2019-07-31 06:38:24 -07:00
CREATE INDEX player_status_name ON player_status(name);
2019-06-11 15:37:57 -07:00
2019-07-31 06:38:24 -07:00
CREATE TABLE player (
2019-07-18 18:41:40 -07:00
id INTEGER PRIMARY KEY AUTOINCREMENT
, name TEXT NOT NULL
, master_id INTEGER
2019-06-20 01:59:39 -07:00
, current_status_id INTEGER
2019-07-31 06:38:24 -07:00
, last_login_id INTEGER
2019-08-02 14:50:18 -07:00
, flagged BOOLEAN NOT NULL DEFAULT 0
2019-07-18 18:41:40 -07:00
, FOREIGN KEY (master_id) REFERENCES player(id)
2019-06-20 01:59:39 -07:00
, FOREIGN KEY (current_status_id) REFERENCES player_status_log(id)
2019-07-31 06:38:24 -07:00
, FOREIGN KEY (last_login_id) REFERENCES connection_log(id)
2019-06-11 15:37:57 -07:00
);
2019-07-31 06:38:24 -07:00
CREATE UNIQUE INDEX player_name ON player(LOWER(name));
CREATE INDEX player_master_id ON player(master_id);
CREATE INDEX player_current_status_id ON player(current_status_id);
CREATE INDEX player_last_login_id ON player(last_login_id);
2019-06-11 15:37:57 -07:00
2019-07-31 06:38:24 -07:00
CREATE TABLE player_status_log (
2019-06-11 15:37:57 -07:00
id INTEGER PRIMARY KEY AUTOINCREMENT
, executor_id INTEGER NOT NULL
, player_id INTEGER NOT NULL
, status_id INTEGER NOT NULL
, timestamp INTEGER NOT NULL
, reason TEXT
, expires INTEGER
2019-06-11 15:37:57 -07:00
, FOREIGN KEY (executor_id) REFERENCES player(id)
, FOREIGN KEY (player_id) REFERENCES player(id)
, FOREIGN KEY (status_id) REFERENCES player_status(id)
2019-06-15 20:52:08 -07:00
, UNIQUE (player_id, status_id, timestamp)
2019-06-11 15:37:57 -07:00
);
2019-07-31 06:38:24 -07:00
CREATE INDEX player_status_log_player_id ON player_status_log(player_id);
CREATE INDEX player_status_log_timestamp ON player_status_log(timestamp);
CREATE INDEX player_status_log_reason ON player_status_log(reason);
2019-06-11 15:37:57 -07:00
-- END PLAYER
-- IP
2019-07-31 06:38:24 -07:00
CREATE TABLE ip_status (
2019-06-11 15:37:57 -07:00
id INTEGER PRIMARY KEY
, name TEXT NOT NULL
);
2019-07-31 06:38:24 -07:00
CREATE INDEX ip_status_name ON ip_status(name);
2019-06-11 15:37:57 -07:00
2019-07-31 06:38:24 -07:00
CREATE TABLE ip (
2019-06-11 15:37:57 -07:00
ip INTEGER PRIMARY KEY
2019-06-20 01:59:39 -07:00
, current_status_id INTEGER
, FOREIGN KEY (current_status_id) REFERENCES ip_status_log(id)
2019-06-11 15:37:57 -07:00
);
2019-07-31 06:38:24 -07:00
CREATE INDEX ip_current_status_id ON ip(current_status_id);
2019-06-11 15:37:57 -07:00
2019-07-31 06:38:24 -07:00
CREATE TABLE ip_status_log (
2019-06-11 15:37:57 -07:00
id INTEGER PRIMARY KEY AUTOINCREMENT
, executor_id INTEGER NOT NULL
, ip INTEGER NOT NULL
, status_id INTEGER NOT NULL
, timestamp INTEGER NOT NULL
, reason TEXT
, expires INTEGER
, FOREIGN KEY (executor_id) REFERENCES player(id)
, FOREIGN KEY (ip) REFERENCES ip(ip)
, FOREIGN KEY (status_id) REFERENCES ip_status(id)
);
2019-07-31 06:38:24 -07:00
CREATE INDEX ip_status_log_ip ON ip_status_log(ip);
CREATE INDEX ip_status_log_timestamp ON ip_status_log(timestamp);
CREATE INDEX ip_status_log_reason ON ip_status_log(reason);
2019-06-11 15:37:57 -07:00
-- END IP
-- ASN
2019-07-31 06:38:24 -07:00
CREATE TABLE asn_status (
2019-06-11 15:37:57 -07:00
id INTEGER PRIMARY KEY
, name TEXT NOT NULL
);
2019-07-31 06:38:24 -07:00
CREATE INDEX asn_status_name ON asn_status(name);
2019-06-11 15:37:57 -07:00
2019-07-31 06:38:24 -07:00
CREATE TABLE asn (
2019-06-11 15:37:57 -07:00
asn INTEGER PRIMARY KEY
2019-06-20 01:59:39 -07:00
, current_status_id INTEGER
, FOREIGN KEY (current_status_id) REFERENCES asn_status_log(id)
2019-06-11 15:37:57 -07:00
);
2019-07-31 06:38:24 -07:00
CREATE INDEX asn_current_status_id ON asn(current_status_id);
2019-06-11 15:37:57 -07:00
2019-07-31 06:38:24 -07:00
CREATE TABLE asn_status_log (
2019-06-11 15:37:57 -07:00
id INTEGER PRIMARY KEY AUTOINCREMENT
, executor_id INTEGER NOT NULL
, asn INTEGER NOT NULL
, status_id INTEGER NOT NULL
, timestamp INTEGER NOT NULL
, reason TEXT
, expires INTEGER
, FOREIGN KEY (executor_id) REFERENCES player(id)
, FOREIGN KEY (asn) REFERENCES asn(asn)
, FOREIGN KEY (status_id) REFERENCES asn_status(id)
);
2019-07-31 06:38:24 -07:00
CREATE INDEX asn_status_log_asn ON asn_status_log(asn);
CREATE INDEX asn_status_log_timestamp ON asn_status_log(timestamp);
CREATE INDEX asn_status_log_reason ON asn_status_log(reason);
2019-06-11 15:37:57 -07:00
-- END ASN
2019-06-25 22:16:29 -07:00
-- LOGS AND ASSOCIATIONS
2019-07-31 06:38:24 -07:00
CREATE TABLE connection_log (
id INTEGER PRIMARY KEY AUTOINCREMENT
, player_id INTEGER NOT NULL
2019-06-11 15:37:57 -07:00
, ip INTEGER NOT NULL
, asn INTEGER NOT NULL
, success INTEGER NOT NULL
, timestamp INTEGER NOT NULL
, FOREIGN KEY (player_id) REFERENCES player(id)
, FOREIGN KEY (ip) REFERENCES ip(ip)
, FOREIGN KEY (asn) REFERENCES asn(asn)
2019-06-15 20:52:08 -07:00
, UNIQUE (player_id, ip, success, timestamp)
2019-06-11 15:37:57 -07:00
);
2019-07-31 06:38:24 -07:00
CREATE INDEX log_player ON connection_log(player_id);
CREATE INDEX log_ip ON connection_log(ip);
CREATE INDEX log_asn ON connection_log(asn);
CREATE INDEX log_timestamp ON connection_log(timestamp);
2019-06-11 15:37:57 -07:00
2019-07-31 06:38:24 -07:00
CREATE TABLE assoc (
2019-06-25 22:16:29 -07:00
player_id INTEGER NOT NULL
, ip INTEGER NOT NULL
, asn INTEGER NOT NULL
, first_seen INTEGER NOT NULL
, last_seen INTEGER NOT NULL
2019-06-11 15:37:57 -07:00
, PRIMARY KEY (player_id, ip, asn)
, FOREIGN KEY (player_id) REFERENCES player(id)
, FOREIGN KEY (ip) REFERENCES ip(ip)
, FOREIGN KEY (asn) REFERENCES asn(asn)
);
2019-07-31 06:38:24 -07:00
CREATE INDEX assoc_player ON assoc(player_id);
CREATE INDEX assoc_ip ON assoc(ip);
CREATE INDEX assoc_asn ON assoc(asn);
2019-06-25 22:16:29 -07:00
-- END LOGS AND ASSOCIATIONS
-- REPORTS
2019-07-31 06:38:24 -07:00
CREATE TABLE report (
id INTEGER PRIMARY KEY AUTOINCREMENT
, reporter_id INTEGER NOT NULL
2019-07-18 18:41:40 -07:00
, report TEXT NOT NULL
, timestamp INTEGER NOT NULL
, FOREIGN KEY (reporter_id) REFERENCES player(id)
);
2019-07-31 06:38:24 -07:00
CREATE INDEX report_reporter ON report(reporter_id);
CREATE INDEX report_timestamp ON report(timestamp);
-- END REPORTS
2019-07-31 06:38:24 -07:00
COMMIT TRANSACTION;