mirror of
https://github.com/Eggbertx/gochan.git
synced 2025-09-05 11:06:23 -07:00
Add fingerprinting attributes, update ERD
This commit is contained in:
parent
2a49de7575
commit
75fd0bd668
5 changed files with 1537 additions and 125 deletions
File diff suppressed because one or more lines are too long
|
@ -3,7 +3,7 @@
|
|||
-- Macros are substituted by build_initdb.py to the supported database files. Must not contain extra spaces
|
||||
-- Versioning numbering goes by whole numbers. Upgrade script migrate existing databases between versions
|
||||
-- Foreign and unique constraints must be named so they can be dropped.
|
||||
-- MYSQL requires constraint names to be unique globally, hence the long constraint names.
|
||||
-- MySQL requires constraint names to be unique globally, hence the long constraint names.
|
||||
-- Database version: 1
|
||||
|
||||
CREATE TABLE DBPREFIXdatabase_version(
|
||||
|
@ -43,7 +43,8 @@ CREATE TABLE DBPREFIXboards(
|
|||
redirect_to_thread BOOL NOT NULL,
|
||||
require_file BOOL NOT NULL,
|
||||
enable_catalog BOOL NOT NULL,
|
||||
CONSTRAINT boards_section_id_fk FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id),
|
||||
CONSTRAINT boards_section_id_fk
|
||||
FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id),
|
||||
CONSTRAINT boards_dir_unique UNIQUE(dir),
|
||||
CONSTRAINT boards_uri_unique UNIQUE(uri)
|
||||
);
|
||||
|
@ -58,7 +59,8 @@ CREATE TABLE DBPREFIXthreads(
|
|||
last_bump TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
is_deleted BOOL NOT NULL DEFAULT FALSE,
|
||||
CONSTRAINT threads_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE
|
||||
CONSTRAINT threads_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX thread_deleted_index ON DBPREFIXthreads(is_deleted);
|
||||
|
@ -82,7 +84,8 @@ CREATE TABLE DBPREFIXposts(
|
|||
banned_message TEXT,
|
||||
flag VARCHAR(45) NOT NULL DEFAULT '',
|
||||
country VARCHAR(80) NOT NULL DEFAULT '',
|
||||
CONSTRAINT posts_thread_id_fk FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE
|
||||
CONSTRAINT posts_thread_id_fk
|
||||
FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX top_post_index ON DBPREFIXposts(is_top_post);
|
||||
|
@ -100,7 +103,8 @@ CREATE TABLE DBPREFIXfiles(
|
|||
thumbnail_height INT NOT NULL,
|
||||
width INT NOT NULL,
|
||||
height INT NOT NULL,
|
||||
CONSTRAINT files_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE,
|
||||
CONSTRAINT files_post_id_fk
|
||||
FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE,
|
||||
CONSTRAINT files_post_id_file_order_unique UNIQUE(post_id, file_order)
|
||||
);
|
||||
|
||||
|
@ -120,15 +124,18 @@ CREATE TABLE DBPREFIXsessions(
|
|||
staff_id {fk to serial} NOT NULL,
|
||||
expires TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
data VARCHAR(45) NOT NULL,
|
||||
CONSTRAINT sessions_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE
|
||||
CONSTRAINT sessions_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXboard_staff(
|
||||
board_id {fk to serial} NOT NULL,
|
||||
staff_id {fk to serial} NOT NULL,
|
||||
CONSTRAINT board_staff_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id)
|
||||
CONSTRAINT board_staff_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXannouncements(
|
||||
|
@ -157,9 +164,13 @@ CREATE TABLE DBPREFIXip_ban(
|
|||
staff_note VARCHAR(255) NOT NULL,
|
||||
message TEXT NOT NULL,
|
||||
can_appeal BOOL NOT NULL,
|
||||
CONSTRAINT ip_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_banned_for_post_id_fk FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id) ON DELETE SET NULL
|
||||
CONSTRAINT ip_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_banned_for_post_id_fk
|
||||
FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id)
|
||||
ON DELETE SET NULL
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_audit(
|
||||
|
@ -175,8 +186,10 @@ CREATE TABLE DBPREFIXip_ban_audit(
|
|||
message TEXT NOT NULL,
|
||||
can_appeal BOOL NOT NULL,
|
||||
PRIMARY KEY(ip_ban_id, timestamp),
|
||||
CONSTRAINT ip_ban_audit_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
CONSTRAINT ip_ban_audit_ip_ban_id_fk
|
||||
FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_audit_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals(
|
||||
|
@ -186,8 +199,10 @@ CREATE TABLE DBPREFIXip_ban_appeals(
|
|||
appeal_text TEXT NOT NULL,
|
||||
staff_response TEXT,
|
||||
is_denied BOOL NOT NULL,
|
||||
CONSTRAINT ip_ban_appeals_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE
|
||||
CONSTRAINT ip_ban_appeals_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_ip_ban_id_fk
|
||||
FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals_audit(
|
||||
|
@ -198,19 +213,24 @@ CREATE TABLE DBPREFIXip_ban_appeals_audit(
|
|||
staff_response TEXT,
|
||||
is_denied BOOL NOT NULL,
|
||||
PRIMARY KEY(appeal_id, timestamp),
|
||||
CONSTRAINT ip_ban_appeals_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_audit_appeal_id_fk FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id) ON DELETE CASCADE
|
||||
CONSTRAINT ip_ban_appeals_audit_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_audit_appeal_id_fk
|
||||
FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id)
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports(
|
||||
id {serial pk},
|
||||
id {serial pk},
|
||||
handled_by_staff_id {fk to serial},
|
||||
post_id {fk to serial} NOT NULL,
|
||||
ip {inet} NOT NULL,
|
||||
reason TEXT NOT NULL,
|
||||
is_cleared BOOL NOT NULL,
|
||||
CONSTRAINT reports_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE
|
||||
CONSTRAINT reports_handled_by_staff_id_fk
|
||||
FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_post_id_fk
|
||||
FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports_audit(
|
||||
|
@ -218,8 +238,10 @@ CREATE TABLE DBPREFIXreports_audit(
|
|||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
handled_by_staff_id {fk to serial},
|
||||
is_cleared BOOL NOT NULL,
|
||||
CONSTRAINT reports_audit_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_audit_report_id_fk FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE
|
||||
CONSTRAINT reports_audit_handled_by_staff_id_fk
|
||||
FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_audit_report_id_fk
|
||||
FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfilename_ban(
|
||||
|
@ -230,8 +252,10 @@ CREATE TABLE DBPREFIXfilename_ban(
|
|||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
filename VARCHAR(255) NOT NULL,
|
||||
is_regex BOOL NOT NULL,
|
||||
CONSTRAINT filename_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT filename_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
CONSTRAINT filename_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT filename_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXusername_ban(
|
||||
|
@ -242,8 +266,10 @@ CREATE TABLE DBPREFIXusername_ban(
|
|||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
username VARCHAR(255) NOT NULL,
|
||||
is_regex BOOL NOT NULL,
|
||||
CONSTRAINT username_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT username_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
CONSTRAINT username_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT username_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfile_ban(
|
||||
|
@ -253,8 +279,13 @@ CREATE TABLE DBPREFIXfile_ban(
|
|||
staff_note VARCHAR(255) NOT NULL,
|
||||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
checksum TEXT NOT NULL,
|
||||
CONSTRAINT file_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT file_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
fingerprinter VARCHAR(64),
|
||||
ban_ip BOOL NOT NULL,
|
||||
ban_ip_message TEXT,
|
||||
CONSTRAINT file_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT file_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXwordfilters(
|
||||
|
@ -266,9 +297,10 @@ CREATE TABLE DBPREFIXwordfilters(
|
|||
search VARCHAR(75) NOT NULL,
|
||||
is_regex BOOL NOT NULL,
|
||||
change_to VARCHAR(75) NOT NULL,
|
||||
CONSTRAINT wordfilters_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT wordfilters_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT wordfilters_search_check CHECK (search <> '')
|
||||
);
|
||||
|
||||
INSERT INTO DBPREFIXdatabase_version(component, version)
|
||||
VALUES('gochan', 3);
|
||||
VALUES('gochan', 3);
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
-- Macros are substituted by build_initdb.py to the supported database files. Must not contain extra spaces
|
||||
-- Versioning numbering goes by whole numbers. Upgrade script migrate existing databases between versions
|
||||
-- Foreign and unique constraints must be named so they can be dropped.
|
||||
-- MYSQL requires constraint names to be unique globally, hence the long constraint names.
|
||||
-- MySQL requires constraint names to be unique globally, hence the long constraint names.
|
||||
-- Database version: 1
|
||||
|
||||
CREATE TABLE DBPREFIXdatabase_version(
|
||||
|
@ -43,7 +43,8 @@ CREATE TABLE DBPREFIXboards(
|
|||
redirect_to_thread BOOL NOT NULL,
|
||||
require_file BOOL NOT NULL,
|
||||
enable_catalog BOOL NOT NULL,
|
||||
CONSTRAINT boards_section_id_fk FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id),
|
||||
CONSTRAINT boards_section_id_fk
|
||||
FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id),
|
||||
CONSTRAINT boards_dir_unique UNIQUE(dir),
|
||||
CONSTRAINT boards_uri_unique UNIQUE(uri)
|
||||
);
|
||||
|
@ -58,7 +59,8 @@ CREATE TABLE DBPREFIXthreads(
|
|||
last_bump TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
is_deleted BOOL NOT NULL DEFAULT FALSE,
|
||||
CONSTRAINT threads_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE
|
||||
CONSTRAINT threads_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX thread_deleted_index ON DBPREFIXthreads(is_deleted);
|
||||
|
@ -82,7 +84,8 @@ CREATE TABLE DBPREFIXposts(
|
|||
banned_message TEXT,
|
||||
flag VARCHAR(45) NOT NULL DEFAULT '',
|
||||
country VARCHAR(80) NOT NULL DEFAULT '',
|
||||
CONSTRAINT posts_thread_id_fk FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE
|
||||
CONSTRAINT posts_thread_id_fk
|
||||
FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX top_post_index ON DBPREFIXposts(is_top_post);
|
||||
|
@ -100,7 +103,8 @@ CREATE TABLE DBPREFIXfiles(
|
|||
thumbnail_height INT NOT NULL,
|
||||
width INT NOT NULL,
|
||||
height INT NOT NULL,
|
||||
CONSTRAINT files_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE,
|
||||
CONSTRAINT files_post_id_fk
|
||||
FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE,
|
||||
CONSTRAINT files_post_id_file_order_unique UNIQUE(post_id, file_order)
|
||||
);
|
||||
|
||||
|
@ -120,15 +124,18 @@ CREATE TABLE DBPREFIXsessions(
|
|||
staff_id BIGINT NOT NULL,
|
||||
expires TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
data VARCHAR(45) NOT NULL,
|
||||
CONSTRAINT sessions_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE
|
||||
CONSTRAINT sessions_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXboard_staff(
|
||||
board_id BIGINT NOT NULL,
|
||||
staff_id BIGINT NOT NULL,
|
||||
CONSTRAINT board_staff_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id)
|
||||
CONSTRAINT board_staff_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXannouncements(
|
||||
|
@ -157,9 +164,13 @@ CREATE TABLE DBPREFIXip_ban(
|
|||
staff_note VARCHAR(255) NOT NULL,
|
||||
message TEXT NOT NULL,
|
||||
can_appeal BOOL NOT NULL,
|
||||
CONSTRAINT ip_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_banned_for_post_id_fk FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id) ON DELETE SET NULL
|
||||
CONSTRAINT ip_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_banned_for_post_id_fk
|
||||
FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id)
|
||||
ON DELETE SET NULL
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_audit(
|
||||
|
@ -175,8 +186,10 @@ CREATE TABLE DBPREFIXip_ban_audit(
|
|||
message TEXT NOT NULL,
|
||||
can_appeal BOOL NOT NULL,
|
||||
PRIMARY KEY(ip_ban_id, timestamp),
|
||||
CONSTRAINT ip_ban_audit_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
CONSTRAINT ip_ban_audit_ip_ban_id_fk
|
||||
FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_audit_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals(
|
||||
|
@ -186,8 +199,10 @@ CREATE TABLE DBPREFIXip_ban_appeals(
|
|||
appeal_text TEXT NOT NULL,
|
||||
staff_response TEXT,
|
||||
is_denied BOOL NOT NULL,
|
||||
CONSTRAINT ip_ban_appeals_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE
|
||||
CONSTRAINT ip_ban_appeals_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_ip_ban_id_fk
|
||||
FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals_audit(
|
||||
|
@ -198,19 +213,24 @@ CREATE TABLE DBPREFIXip_ban_appeals_audit(
|
|||
staff_response TEXT,
|
||||
is_denied BOOL NOT NULL,
|
||||
PRIMARY KEY(appeal_id, timestamp),
|
||||
CONSTRAINT ip_ban_appeals_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_audit_appeal_id_fk FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id) ON DELETE CASCADE
|
||||
CONSTRAINT ip_ban_appeals_audit_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_audit_appeal_id_fk
|
||||
FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id)
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
handled_by_staff_id BIGINT,
|
||||
post_id BIGINT NOT NULL,
|
||||
ip VARBINARY(16) NOT NULL,
|
||||
reason TEXT NOT NULL,
|
||||
is_cleared BOOL NOT NULL,
|
||||
CONSTRAINT reports_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE
|
||||
CONSTRAINT reports_handled_by_staff_id_fk
|
||||
FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_post_id_fk
|
||||
FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports_audit(
|
||||
|
@ -218,8 +238,10 @@ CREATE TABLE DBPREFIXreports_audit(
|
|||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
handled_by_staff_id BIGINT,
|
||||
is_cleared BOOL NOT NULL,
|
||||
CONSTRAINT reports_audit_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_audit_report_id_fk FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE
|
||||
CONSTRAINT reports_audit_handled_by_staff_id_fk
|
||||
FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_audit_report_id_fk
|
||||
FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfilename_ban(
|
||||
|
@ -230,8 +252,10 @@ CREATE TABLE DBPREFIXfilename_ban(
|
|||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
filename VARCHAR(255) NOT NULL,
|
||||
is_regex BOOL NOT NULL,
|
||||
CONSTRAINT filename_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT filename_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
CONSTRAINT filename_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT filename_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXusername_ban(
|
||||
|
@ -242,8 +266,10 @@ CREATE TABLE DBPREFIXusername_ban(
|
|||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
username VARCHAR(255) NOT NULL,
|
||||
is_regex BOOL NOT NULL,
|
||||
CONSTRAINT username_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT username_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
CONSTRAINT username_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT username_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfile_ban(
|
||||
|
@ -253,8 +279,13 @@ CREATE TABLE DBPREFIXfile_ban(
|
|||
staff_note VARCHAR(255) NOT NULL,
|
||||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
checksum TEXT NOT NULL,
|
||||
CONSTRAINT file_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT file_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
fingerprinter VARCHAR(64),
|
||||
ban_ip BOOL NOT NULL,
|
||||
ban_ip_message TEXT,
|
||||
CONSTRAINT file_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT file_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXwordfilters(
|
||||
|
@ -266,9 +297,10 @@ CREATE TABLE DBPREFIXwordfilters(
|
|||
search VARCHAR(75) NOT NULL,
|
||||
is_regex BOOL NOT NULL,
|
||||
change_to VARCHAR(75) NOT NULL,
|
||||
CONSTRAINT wordfilters_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT wordfilters_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT wordfilters_search_check CHECK (search <> '')
|
||||
);
|
||||
|
||||
INSERT INTO DBPREFIXdatabase_version(component, version)
|
||||
VALUES('gochan', 3);
|
||||
VALUES('gochan', 3);
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
-- Macros are substituted by build_initdb.py to the supported database files. Must not contain extra spaces
|
||||
-- Versioning numbering goes by whole numbers. Upgrade script migrate existing databases between versions
|
||||
-- Foreign and unique constraints must be named so they can be dropped.
|
||||
-- MYSQL requires constraint names to be unique globally, hence the long constraint names.
|
||||
-- MySQL requires constraint names to be unique globally, hence the long constraint names.
|
||||
-- Database version: 1
|
||||
|
||||
CREATE TABLE DBPREFIXdatabase_version(
|
||||
|
@ -43,7 +43,8 @@ CREATE TABLE DBPREFIXboards(
|
|||
redirect_to_thread BOOL NOT NULL,
|
||||
require_file BOOL NOT NULL,
|
||||
enable_catalog BOOL NOT NULL,
|
||||
CONSTRAINT boards_section_id_fk FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id),
|
||||
CONSTRAINT boards_section_id_fk
|
||||
FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id),
|
||||
CONSTRAINT boards_dir_unique UNIQUE(dir),
|
||||
CONSTRAINT boards_uri_unique UNIQUE(uri)
|
||||
);
|
||||
|
@ -58,7 +59,8 @@ CREATE TABLE DBPREFIXthreads(
|
|||
last_bump TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
is_deleted BOOL NOT NULL DEFAULT FALSE,
|
||||
CONSTRAINT threads_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE
|
||||
CONSTRAINT threads_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX thread_deleted_index ON DBPREFIXthreads(is_deleted);
|
||||
|
@ -82,7 +84,8 @@ CREATE TABLE DBPREFIXposts(
|
|||
banned_message TEXT,
|
||||
flag VARCHAR(45) NOT NULL DEFAULT '',
|
||||
country VARCHAR(80) NOT NULL DEFAULT '',
|
||||
CONSTRAINT posts_thread_id_fk FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE
|
||||
CONSTRAINT posts_thread_id_fk
|
||||
FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX top_post_index ON DBPREFIXposts(is_top_post);
|
||||
|
@ -100,7 +103,8 @@ CREATE TABLE DBPREFIXfiles(
|
|||
thumbnail_height INT NOT NULL,
|
||||
width INT NOT NULL,
|
||||
height INT NOT NULL,
|
||||
CONSTRAINT files_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE,
|
||||
CONSTRAINT files_post_id_fk
|
||||
FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE,
|
||||
CONSTRAINT files_post_id_file_order_unique UNIQUE(post_id, file_order)
|
||||
);
|
||||
|
||||
|
@ -120,15 +124,18 @@ CREATE TABLE DBPREFIXsessions(
|
|||
staff_id BIGINT NOT NULL,
|
||||
expires TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
data VARCHAR(45) NOT NULL,
|
||||
CONSTRAINT sessions_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE
|
||||
CONSTRAINT sessions_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXboard_staff(
|
||||
board_id BIGINT NOT NULL,
|
||||
staff_id BIGINT NOT NULL,
|
||||
CONSTRAINT board_staff_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id)
|
||||
CONSTRAINT board_staff_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXannouncements(
|
||||
|
@ -157,9 +164,13 @@ CREATE TABLE DBPREFIXip_ban(
|
|||
staff_note VARCHAR(255) NOT NULL,
|
||||
message TEXT NOT NULL,
|
||||
can_appeal BOOL NOT NULL,
|
||||
CONSTRAINT ip_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_banned_for_post_id_fk FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id) ON DELETE SET NULL
|
||||
CONSTRAINT ip_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_banned_for_post_id_fk
|
||||
FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id)
|
||||
ON DELETE SET NULL
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_audit(
|
||||
|
@ -175,8 +186,10 @@ CREATE TABLE DBPREFIXip_ban_audit(
|
|||
message TEXT NOT NULL,
|
||||
can_appeal BOOL NOT NULL,
|
||||
PRIMARY KEY(ip_ban_id, timestamp),
|
||||
CONSTRAINT ip_ban_audit_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
CONSTRAINT ip_ban_audit_ip_ban_id_fk
|
||||
FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_audit_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals(
|
||||
|
@ -186,8 +199,10 @@ CREATE TABLE DBPREFIXip_ban_appeals(
|
|||
appeal_text TEXT NOT NULL,
|
||||
staff_response TEXT,
|
||||
is_denied BOOL NOT NULL,
|
||||
CONSTRAINT ip_ban_appeals_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE
|
||||
CONSTRAINT ip_ban_appeals_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_ip_ban_id_fk
|
||||
FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals_audit(
|
||||
|
@ -198,19 +213,24 @@ CREATE TABLE DBPREFIXip_ban_appeals_audit(
|
|||
staff_response TEXT,
|
||||
is_denied BOOL NOT NULL,
|
||||
PRIMARY KEY(appeal_id, timestamp),
|
||||
CONSTRAINT ip_ban_appeals_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_audit_appeal_id_fk FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id) ON DELETE CASCADE
|
||||
CONSTRAINT ip_ban_appeals_audit_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_audit_appeal_id_fk
|
||||
FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id)
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
handled_by_staff_id BIGINT,
|
||||
post_id BIGINT NOT NULL,
|
||||
ip INET NOT NULL,
|
||||
reason TEXT NOT NULL,
|
||||
is_cleared BOOL NOT NULL,
|
||||
CONSTRAINT reports_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE
|
||||
CONSTRAINT reports_handled_by_staff_id_fk
|
||||
FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_post_id_fk
|
||||
FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports_audit(
|
||||
|
@ -218,8 +238,10 @@ CREATE TABLE DBPREFIXreports_audit(
|
|||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
handled_by_staff_id BIGINT,
|
||||
is_cleared BOOL NOT NULL,
|
||||
CONSTRAINT reports_audit_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_audit_report_id_fk FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE
|
||||
CONSTRAINT reports_audit_handled_by_staff_id_fk
|
||||
FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_audit_report_id_fk
|
||||
FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfilename_ban(
|
||||
|
@ -230,8 +252,10 @@ CREATE TABLE DBPREFIXfilename_ban(
|
|||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
filename VARCHAR(255) NOT NULL,
|
||||
is_regex BOOL NOT NULL,
|
||||
CONSTRAINT filename_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT filename_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
CONSTRAINT filename_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT filename_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXusername_ban(
|
||||
|
@ -242,8 +266,10 @@ CREATE TABLE DBPREFIXusername_ban(
|
|||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
username VARCHAR(255) NOT NULL,
|
||||
is_regex BOOL NOT NULL,
|
||||
CONSTRAINT username_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT username_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
CONSTRAINT username_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT username_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfile_ban(
|
||||
|
@ -253,8 +279,13 @@ CREATE TABLE DBPREFIXfile_ban(
|
|||
staff_note VARCHAR(255) NOT NULL,
|
||||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
checksum TEXT NOT NULL,
|
||||
CONSTRAINT file_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT file_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
fingerprinter VARCHAR(64),
|
||||
ban_ip BOOL NOT NULL,
|
||||
ban_ip_message TEXT,
|
||||
CONSTRAINT file_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT file_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXwordfilters(
|
||||
|
@ -266,9 +297,10 @@ CREATE TABLE DBPREFIXwordfilters(
|
|||
search VARCHAR(75) NOT NULL,
|
||||
is_regex BOOL NOT NULL,
|
||||
change_to VARCHAR(75) NOT NULL,
|
||||
CONSTRAINT wordfilters_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT wordfilters_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT wordfilters_search_check CHECK (search <> '')
|
||||
);
|
||||
|
||||
INSERT INTO DBPREFIXdatabase_version(component, version)
|
||||
VALUES('gochan', 3);
|
||||
VALUES('gochan', 3);
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
-- Macros are substituted by build_initdb.py to the supported database files. Must not contain extra spaces
|
||||
-- Versioning numbering goes by whole numbers. Upgrade script migrate existing databases between versions
|
||||
-- Foreign and unique constraints must be named so they can be dropped.
|
||||
-- MYSQL requires constraint names to be unique globally, hence the long constraint names.
|
||||
-- MySQL requires constraint names to be unique globally, hence the long constraint names.
|
||||
-- Database version: 1
|
||||
|
||||
CREATE TABLE DBPREFIXdatabase_version(
|
||||
|
@ -43,7 +43,8 @@ CREATE TABLE DBPREFIXboards(
|
|||
redirect_to_thread BOOL NOT NULL,
|
||||
require_file BOOL NOT NULL,
|
||||
enable_catalog BOOL NOT NULL,
|
||||
CONSTRAINT boards_section_id_fk FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id),
|
||||
CONSTRAINT boards_section_id_fk
|
||||
FOREIGN KEY(section_id) REFERENCES DBPREFIXsections(id),
|
||||
CONSTRAINT boards_dir_unique UNIQUE(dir),
|
||||
CONSTRAINT boards_uri_unique UNIQUE(uri)
|
||||
);
|
||||
|
@ -58,7 +59,8 @@ CREATE TABLE DBPREFIXthreads(
|
|||
last_bump TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
deleted_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
is_deleted BOOL NOT NULL DEFAULT FALSE,
|
||||
CONSTRAINT threads_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE
|
||||
CONSTRAINT threads_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX thread_deleted_index ON DBPREFIXthreads(is_deleted);
|
||||
|
@ -82,7 +84,8 @@ CREATE TABLE DBPREFIXposts(
|
|||
banned_message TEXT,
|
||||
flag VARCHAR(45) NOT NULL DEFAULT '',
|
||||
country VARCHAR(80) NOT NULL DEFAULT '',
|
||||
CONSTRAINT posts_thread_id_fk FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE
|
||||
CONSTRAINT posts_thread_id_fk
|
||||
FOREIGN KEY(thread_id) REFERENCES DBPREFIXthreads(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE INDEX top_post_index ON DBPREFIXposts(is_top_post);
|
||||
|
@ -100,7 +103,8 @@ CREATE TABLE DBPREFIXfiles(
|
|||
thumbnail_height INT NOT NULL,
|
||||
width INT NOT NULL,
|
||||
height INT NOT NULL,
|
||||
CONSTRAINT files_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE,
|
||||
CONSTRAINT files_post_id_fk
|
||||
FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE,
|
||||
CONSTRAINT files_post_id_file_order_unique UNIQUE(post_id, file_order)
|
||||
);
|
||||
|
||||
|
@ -120,15 +124,18 @@ CREATE TABLE DBPREFIXsessions(
|
|||
staff_id BIGINT NOT NULL,
|
||||
expires TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
data VARCHAR(45) NOT NULL,
|
||||
CONSTRAINT sessions_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE
|
||||
CONSTRAINT sessions_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXboard_staff(
|
||||
board_id BIGINT NOT NULL,
|
||||
staff_id BIGINT NOT NULL,
|
||||
CONSTRAINT board_staff_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id)
|
||||
CONSTRAINT board_staff_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id) ON DELETE CASCADE,
|
||||
CONSTRAINT board_staff_pk PRIMARY KEY (board_id,staff_id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXannouncements(
|
||||
|
@ -157,9 +164,13 @@ CREATE TABLE DBPREFIXip_ban(
|
|||
staff_note VARCHAR(255) NOT NULL,
|
||||
message TEXT NOT NULL,
|
||||
can_appeal BOOL NOT NULL,
|
||||
CONSTRAINT ip_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_banned_for_post_id_fk FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id) ON DELETE SET NULL
|
||||
CONSTRAINT ip_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_banned_for_post_id_fk
|
||||
FOREIGN KEY(banned_for_post_id) REFERENCES DBPREFIXposts(id)
|
||||
ON DELETE SET NULL
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_audit(
|
||||
|
@ -175,8 +186,10 @@ CREATE TABLE DBPREFIXip_ban_audit(
|
|||
message TEXT NOT NULL,
|
||||
can_appeal BOOL NOT NULL,
|
||||
PRIMARY KEY(ip_ban_id, timestamp),
|
||||
CONSTRAINT ip_ban_audit_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
CONSTRAINT ip_ban_audit_ip_ban_id_fk
|
||||
FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE,
|
||||
CONSTRAINT ip_ban_audit_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals(
|
||||
|
@ -186,8 +199,10 @@ CREATE TABLE DBPREFIXip_ban_appeals(
|
|||
appeal_text TEXT NOT NULL,
|
||||
staff_response TEXT,
|
||||
is_denied BOOL NOT NULL,
|
||||
CONSTRAINT ip_ban_appeals_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_ip_ban_id_fk FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE
|
||||
CONSTRAINT ip_ban_appeals_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_ip_ban_id_fk
|
||||
FOREIGN KEY(ip_ban_id) REFERENCES DBPREFIXip_ban(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals_audit(
|
||||
|
@ -198,19 +213,24 @@ CREATE TABLE DBPREFIXip_ban_appeals_audit(
|
|||
staff_response TEXT,
|
||||
is_denied BOOL NOT NULL,
|
||||
PRIMARY KEY(appeal_id, timestamp),
|
||||
CONSTRAINT ip_ban_appeals_audit_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_audit_appeal_id_fk FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id) ON DELETE CASCADE
|
||||
CONSTRAINT ip_ban_appeals_audit_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT ip_ban_appeals_audit_appeal_id_fk
|
||||
FOREIGN KEY(appeal_id) REFERENCES DBPREFIXip_ban_appeals(id)
|
||||
ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
handled_by_staff_id BIGINT,
|
||||
post_id BIGINT NOT NULL,
|
||||
ip VARCHAR(45) NOT NULL,
|
||||
reason TEXT NOT NULL,
|
||||
is_cleared BOOL NOT NULL,
|
||||
CONSTRAINT reports_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_post_id_fk FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE
|
||||
CONSTRAINT reports_handled_by_staff_id_fk
|
||||
FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_post_id_fk
|
||||
FOREIGN KEY(post_id) REFERENCES DBPREFIXposts(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports_audit(
|
||||
|
@ -218,8 +238,10 @@ CREATE TABLE DBPREFIXreports_audit(
|
|||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
handled_by_staff_id BIGINT,
|
||||
is_cleared BOOL NOT NULL,
|
||||
CONSTRAINT reports_audit_handled_by_staff_id_fk FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_audit_report_id_fk FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE
|
||||
CONSTRAINT reports_audit_handled_by_staff_id_fk
|
||||
FOREIGN KEY(handled_by_staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT reports_audit_report_id_fk
|
||||
FOREIGN KEY(report_id) REFERENCES DBPREFIXreports(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfilename_ban(
|
||||
|
@ -230,8 +252,10 @@ CREATE TABLE DBPREFIXfilename_ban(
|
|||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
filename VARCHAR(255) NOT NULL,
|
||||
is_regex BOOL NOT NULL,
|
||||
CONSTRAINT filename_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT filename_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
CONSTRAINT filename_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT filename_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXusername_ban(
|
||||
|
@ -242,8 +266,10 @@ CREATE TABLE DBPREFIXusername_ban(
|
|||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
username VARCHAR(255) NOT NULL,
|
||||
is_regex BOOL NOT NULL,
|
||||
CONSTRAINT username_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT username_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
CONSTRAINT username_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT username_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfile_ban(
|
||||
|
@ -253,8 +279,13 @@ CREATE TABLE DBPREFIXfile_ban(
|
|||
staff_note VARCHAR(255) NOT NULL,
|
||||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
checksum TEXT NOT NULL,
|
||||
CONSTRAINT file_ban_board_id_fk FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT file_ban_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
fingerprinter VARCHAR(64),
|
||||
ban_ip BOOL NOT NULL,
|
||||
ban_ip_message TEXT,
|
||||
CONSTRAINT file_ban_board_id_fk
|
||||
FOREIGN KEY(board_id) REFERENCES DBPREFIXboards(id) ON DELETE CASCADE,
|
||||
CONSTRAINT file_ban_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXwordfilters(
|
||||
|
@ -266,9 +297,10 @@ CREATE TABLE DBPREFIXwordfilters(
|
|||
search VARCHAR(75) NOT NULL,
|
||||
is_regex BOOL NOT NULL,
|
||||
change_to VARCHAR(75) NOT NULL,
|
||||
CONSTRAINT wordfilters_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT wordfilters_staff_id_fk
|
||||
FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id),
|
||||
CONSTRAINT wordfilters_search_check CHECK (search <> '')
|
||||
);
|
||||
|
||||
INSERT INTO DBPREFIXdatabase_version(component, version)
|
||||
VALUES('gochan', 3);
|
||||
VALUES('gochan', 3);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue