This commit is contained in:
121
src/db/database.sql
Normal file
121
src/db/database.sql
Normal file
@@ -0,0 +1,121 @@
|
||||
-- admins
|
||||
CREATE TABLE IF NOT EXISTS admin (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(255) NOT NULL,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
permissions INT NOT NULL
|
||||
);
|
||||
|
||||
-- user
|
||||
CREATE TABLE IF NOT EXISTS user (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
firstname VARCHAR(255) NOT NULL,
|
||||
lastname VARCHAR(255) NOT NULL,
|
||||
birthday DATE NOT NULL,
|
||||
telephone VARCHAR(255),
|
||||
username VARCHAR(255) NOT NULL,
|
||||
uuid VARCHAR(36)
|
||||
);
|
||||
|
||||
-- update team draft on username update
|
||||
CREATE TRIGGER IF NOT EXISTS user_username_update AFTER UPDATE ON user
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF OLD.username <> NEW.username THEN
|
||||
UPDATE team_draft SET member_one_name = NEW.username WHERE member_one_name = OLD.username;
|
||||
UPDATE team_draft SET member_two_name = NEW.username WHERE member_two_name = OLD.username;
|
||||
END IF;
|
||||
END;
|
||||
DELIMITER ;
|
||||
|
||||
-- team
|
||||
CREATE TABLE IF NOT EXISTS team (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(255) UNIQUE NOT NULL,
|
||||
color CHAR(7) NOT NULL,
|
||||
last_joined TIMESTAMP
|
||||
);
|
||||
|
||||
-- team member
|
||||
CREATE TABLE IF NOT EXISTS team_member (
|
||||
team_id INT NOT NULL,
|
||||
user_id INT NOT NULL,
|
||||
FOREIGN KEY (team_id) REFERENCES team(id),
|
||||
FOREIGN KEY (user_id) REFERENCES user(id)
|
||||
);
|
||||
|
||||
-- team draft
|
||||
CREATE TABLE IF NOT EXISTS team_draft (
|
||||
member_one_name VARCHAR(255) NOT NULL,
|
||||
member_two_name VARCHAR(255) NOT NULL,
|
||||
team_id INT NOT NULL,
|
||||
FOREIGN KEY (team_id) REFERENCES team(id)
|
||||
);
|
||||
|
||||
-- death
|
||||
CREATE TABLE IF NOT EXISTS death (
|
||||
message VARCHAR(1024) NOT NULL,
|
||||
dead_user_id INT NOT NULL,
|
||||
killer_user_id INT,
|
||||
FOREIGN KEY (dead_user_id) REFERENCES user(id),
|
||||
FOREIGN KEY (killer_user_id) REFERENCES user(id)
|
||||
);
|
||||
|
||||
-- strike reason
|
||||
CREATE TABLE IF NOT EXISTS strike_reason (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
weight TINYINT NOT NULL
|
||||
);
|
||||
|
||||
-- strike
|
||||
CREATE TABLE IF NOT EXISTS strike (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
at TIMESTAMP NOT NULL,
|
||||
strike_reason_id INT NOT NULL,
|
||||
FOREIGN KEY (strike_reason_id) REFERENCES strike_reason(id)
|
||||
);
|
||||
|
||||
-- report
|
||||
CREATE TABLE IF NOT EXISTS report (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
reason VARCHAR(255) NOT NULL,
|
||||
body TEXT,
|
||||
url_hash VARCHAR(255) NOT NULL UNIQUE,
|
||||
created_at TIMESTAMP,
|
||||
reporter_team_id INT NOT NULL,
|
||||
reported_team_id INT,
|
||||
FOREIGN KEY (reporter_team_id) REFERENCES team(id),
|
||||
FOREIGN KEY (reported_team_id) REFERENCES team(id)
|
||||
);
|
||||
|
||||
-- report status
|
||||
CREATE TABLE IF NOT EXISTS report_status (
|
||||
status ENUM('open', 'closed'),
|
||||
notice TEXT,
|
||||
statement TEXT,
|
||||
report_id INT NOT NULL UNIQUE,
|
||||
reviewer_id INT,
|
||||
strike_id INT,
|
||||
FOREIGN KEY (report_id) REFERENCES report(id),
|
||||
FOREIGN KEY (reviewer_id) REFERENCES admin(id),
|
||||
FOREIGN KEY (strike_id) REFERENCES strike(id)
|
||||
);
|
||||
|
||||
-- feedback
|
||||
CREATE TABLE IF NOT EXISTS feedback (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
event VARCHAR(255) NOT NULL,
|
||||
title VARCHAR(255),
|
||||
content TEXT,
|
||||
url_hash VARCHAR(255) NOT NULL UNIQUE,
|
||||
last_changed TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
user_id INT,
|
||||
FOREIGN KEY (user_id) REFERENCES user(id)
|
||||
);
|
||||
|
||||
-- settings
|
||||
CREATE TABLE IF NOT EXISTS settings (
|
||||
name VARCHAR(255) NOT NULL,
|
||||
value TEXT NOT NULL
|
||||
);
|
||||
Reference in New Issue
Block a user