mirror of
https://github.com/Eggbertx/gochan.git
synced 2025-08-25 09:36:24 -07:00
get rid of duplicate sql files
This commit is contained in:
parent
3aba10b3b1
commit
324c21abda
11 changed files with 16 additions and 1090 deletions
10
build.py
10
build.py
|
@ -34,9 +34,10 @@ release_files = (
|
|||
"html/permabanned.jpg",
|
||||
"sample-configs/",
|
||||
"templates/",
|
||||
"initdb_master.sql",
|
||||
"initdb_mysql.sql",
|
||||
"initdb_postgres.sql",
|
||||
"sql/initdb_master.sql",
|
||||
"sql/initdb_mysql.sql",
|
||||
"sql/initdb_postgres.sql",
|
||||
"sql/initdb_sqlite3.sql",
|
||||
"LICENSE",
|
||||
"README.md",
|
||||
)
|
||||
|
@ -362,7 +363,7 @@ def install(prefix="/usr", document_root="/srv/gochan", symlinks=False, js_only=
|
|||
if gcos == "linux":
|
||||
print(
|
||||
"If your Linux distribution has systemd, you will also need to run the following commands:\n",
|
||||
"cp sample-configs/gochan-[mysql|postgresql].service /lib/systemd/system/gochan.service\n",
|
||||
"cp sample-configs/gochan-[mysql|postgresql|sqlite3].service /lib/systemd/system/gochan.service\n",
|
||||
"systemctl daemon-reload\n",
|
||||
"systemctl enable gochan.service\n",
|
||||
"systemctl start gochan.service")
|
||||
|
@ -408,6 +409,7 @@ def release(goos):
|
|||
|
||||
|
||||
mkdir(path.join(release_dir, "html"))
|
||||
mkdir(path.join(release_dir, "sql"))
|
||||
for file in release_files:
|
||||
srcinfo = pathinfo(file)
|
||||
if srcinfo == PATH_NOTHING:
|
||||
|
|
|
@ -77,6 +77,5 @@ def dofile(filestart):
|
|||
|
||||
|
||||
if __name__ == "__main__":
|
||||
dofile(path.join("..", "initdb_"))
|
||||
dofile(path.join("..", "sql", "preapril2020migration", "initdb_"))
|
||||
dofile(path.join("..", "sql", "initdb_"))
|
||||
dofile(path.join("..", "sql", "preapril2020migration", "oldDBMigration_"))
|
||||
|
|
|
@ -1,271 +0,0 @@
|
|||
-- Gochan master template for new database script
|
||||
-- Contains macros in the form [curlybrace open]macro text[curlybrace close]
|
||||
-- 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.
|
||||
-- Database version: 1
|
||||
|
||||
CREATE TABLE DBPREFIXdatabase_version(
|
||||
component VARCHAR(40) NOT NULL PRIMARY KEY,
|
||||
version INT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXsections(
|
||||
id {serial pk},
|
||||
name TEXT NOT NULL,
|
||||
abbreviation TEXT NOT NULL,
|
||||
position SMALLINT NOT NULL,
|
||||
hidden BOOL NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXboards(
|
||||
id {serial pk},
|
||||
section_id {fk to serial} NOT NULL,
|
||||
uri VARCHAR(45) NOT NULL,
|
||||
dir VARCHAR(45) NOT NULL,
|
||||
navbar_position SMALLINT NOT NULL,
|
||||
title VARCHAR(45) NOT NULL,
|
||||
subtitle VARCHAR(64) NOT NULL,
|
||||
description VARCHAR(64) NOT NULL,
|
||||
max_file_size INT NOT NULL,
|
||||
max_threads SMALLINT NOT NULL,
|
||||
default_style VARCHAR(45) NOT NULL,
|
||||
locked BOOL NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
anonymous_name VARCHAR(45) NOT NULL DEFAULT 'Anonymous',
|
||||
force_anonymous BOOL NOT NULL,
|
||||
autosage_after SMALLINT NOT NULL,
|
||||
no_images_after SMALLINT NOT NULL,
|
||||
max_message_length SMALLINT NOT NULL,
|
||||
min_message_length SMALLINT NOT NULL,
|
||||
allow_embeds BOOL NOT NULL,
|
||||
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_dir_unique UNIQUE(dir),
|
||||
CONSTRAINT boards_uri_unique UNIQUE(uri)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXthreads(
|
||||
id {serial pk},
|
||||
board_id {fk to serial} NOT NULL,
|
||||
locked BOOL NOT NULL DEFAULT FALSE,
|
||||
stickied BOOL NOT NULL DEFAULT FALSE,
|
||||
anchored BOOL NOT NULL DEFAULT FALSE,
|
||||
cyclical BOOL NOT NULL DEFAULT FALSE,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE INDEX thread_deleted_index ON DBPREFIXthreads(is_deleted);
|
||||
|
||||
CREATE TABLE DBPREFIXposts(
|
||||
id {serial pk},
|
||||
thread_id {fk to serial} NOT NULL,
|
||||
is_top_post BOOL NOT NULL DEFAULT FALSE,
|
||||
ip VARCHAR(45) NOT NULL,
|
||||
created_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
name VARCHAR(50) NOT NULL DEFAULT '',
|
||||
tripcode VARCHAR(10) NOT NULL DEFAULT '',
|
||||
is_role_signature BOOL NOT NULL DEFAULT FALSE,
|
||||
email VARCHAR(50) NOT NULL DEFAULT '',
|
||||
subject VARCHAR(100) NOT NULL DEFAULT '',
|
||||
message TEXT NOT NULL,
|
||||
message_raw TEXT NOT NULL,
|
||||
password TEXT NOT NULL,
|
||||
deleted_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
is_deleted BOOL NOT NULL DEFAULT FALSE,
|
||||
banned_message TEXT,
|
||||
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);
|
||||
|
||||
CREATE TABLE DBPREFIXfiles(
|
||||
id {serial pk},
|
||||
post_id {fk to serial} NOT NULL,
|
||||
file_order INT NOT NULL,
|
||||
original_filename VARCHAR(255) NOT NULL,
|
||||
filename VARCHAR(45) NOT NULL,
|
||||
checksum TEXT NOT NULL,
|
||||
file_size INT NOT NULL,
|
||||
is_spoilered BOOL NOT NULL,
|
||||
thumbnail_width INT NOT NULL,
|
||||
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_file_order_unique UNIQUE(post_id, file_order)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXstaff(
|
||||
id {serial pk},
|
||||
username VARCHAR(45) NOT NULL,
|
||||
password_checksum VARCHAR(120) NOT NULL,
|
||||
global_rank INT,
|
||||
added_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
last_login TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
is_active BOOL NOT NULL DEFAULT TRUE,
|
||||
CONSTRAINT staff_username_unique UNIQUE(username)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXsessions(
|
||||
id {serial pk},
|
||||
staff_id {fk to serial} NOT NULL,
|
||||
expires TIMESTAMP NOT NULL,
|
||||
data VARCHAR(45) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXannouncements(
|
||||
id {serial pk},
|
||||
staff_id {fk to serial} NOT NULL,
|
||||
subject VARCHAR(45) NOT NULL,
|
||||
message TEXT NOT NULL,
|
||||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT announcements_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban(
|
||||
id {serial pk},
|
||||
staff_id {fk to serial} NOT NULL,
|
||||
board_id {fk to serial},
|
||||
banned_for_post_id {fk to serial},
|
||||
copy_post_text TEXT NOT NULL,
|
||||
is_thread_ban BOOL NOT NULL,
|
||||
is_active BOOL NOT NULL,
|
||||
ip VARCHAR(45) NOT NULL,
|
||||
issued_at TIMESTAMP NOT NULL,
|
||||
appeal_at TIMESTAMP NOT NULL,
|
||||
expires_at TIMESTAMP NOT NULL,
|
||||
permanent BOOL NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_audit(
|
||||
ip_ban_id {fk to serial} NOT NULL,
|
||||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
staff_id {fk to serial} NOT NULL,
|
||||
is_active BOOL NOT NULL,
|
||||
is_thread_ban BOOL NOT NULL,
|
||||
expires_at TIMESTAMP NOT NULL,
|
||||
appeal_at TIMESTAMP NOT NULL,
|
||||
permanent BOOL NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals(
|
||||
id {serial pk},
|
||||
staff_id {fk to serial},
|
||||
ip_ban_id {fk to serial} NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals_audit(
|
||||
appeal_id {fk to serial} NOT NULL,
|
||||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
staff_id {fk to serial},
|
||||
appeal_text TEXT NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports(
|
||||
id {serial pk},
|
||||
handled_by_staff_id {fk to serial},
|
||||
post_id {fk to serial} 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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports_audit(
|
||||
report_id {fk to serial} NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfilename_ban(
|
||||
id {serial pk},
|
||||
board_id {fk to serial},
|
||||
staff_id {fk to serial} NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXusername_ban(
|
||||
id {serial pk},
|
||||
board_id {fk to serial},
|
||||
staff_id {fk to serial} NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfile_ban(
|
||||
id {serial pk},
|
||||
board_id {fk to serial},
|
||||
staff_id {fk to serial} NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXwordfilters(
|
||||
id {serial pk},
|
||||
board_dirs VARCHAR(255) DEFAULT '*',
|
||||
staff_id {fk to serial} NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
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_search_check CHECK (search <> '')
|
||||
);
|
||||
|
||||
INSERT INTO DBPREFIXdatabase_version(component, version)
|
||||
VALUES('gochan', 1);
|
271
initdb_mysql.sql
271
initdb_mysql.sql
|
@ -1,271 +0,0 @@
|
|||
-- Gochan master template for new database script
|
||||
-- Contains macros in the form [curlybrace open]macro text[curlybrace close]
|
||||
-- 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.
|
||||
-- Database version: 1
|
||||
|
||||
CREATE TABLE DBPREFIXdatabase_version(
|
||||
component VARCHAR(40) NOT NULL PRIMARY KEY,
|
||||
version INT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXsections(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
abbreviation TEXT NOT NULL,
|
||||
position SMALLINT NOT NULL,
|
||||
hidden BOOL NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXboards(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
section_id BIGINT NOT NULL,
|
||||
uri VARCHAR(45) NOT NULL,
|
||||
dir VARCHAR(45) NOT NULL,
|
||||
navbar_position SMALLINT NOT NULL,
|
||||
title VARCHAR(45) NOT NULL,
|
||||
subtitle VARCHAR(64) NOT NULL,
|
||||
description VARCHAR(64) NOT NULL,
|
||||
max_file_size INT NOT NULL,
|
||||
max_threads SMALLINT NOT NULL,
|
||||
default_style VARCHAR(45) NOT NULL,
|
||||
locked BOOL NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
anonymous_name VARCHAR(45) NOT NULL DEFAULT 'Anonymous',
|
||||
force_anonymous BOOL NOT NULL,
|
||||
autosage_after SMALLINT NOT NULL,
|
||||
no_images_after SMALLINT NOT NULL,
|
||||
max_message_length SMALLINT NOT NULL,
|
||||
min_message_length SMALLINT NOT NULL,
|
||||
allow_embeds BOOL NOT NULL,
|
||||
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_dir_unique UNIQUE(dir),
|
||||
CONSTRAINT boards_uri_unique UNIQUE(uri)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXthreads(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
board_id BIGINT NOT NULL,
|
||||
locked BOOL NOT NULL DEFAULT FALSE,
|
||||
stickied BOOL NOT NULL DEFAULT FALSE,
|
||||
anchored BOOL NOT NULL DEFAULT FALSE,
|
||||
cyclical BOOL NOT NULL DEFAULT FALSE,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE INDEX thread_deleted_index ON DBPREFIXthreads(is_deleted);
|
||||
|
||||
CREATE TABLE DBPREFIXposts(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
thread_id BIGINT NOT NULL,
|
||||
is_top_post BOOL NOT NULL DEFAULT FALSE,
|
||||
ip VARCHAR(45) NOT NULL,
|
||||
created_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
name VARCHAR(50) NOT NULL DEFAULT '',
|
||||
tripcode VARCHAR(10) NOT NULL DEFAULT '',
|
||||
is_role_signature BOOL NOT NULL DEFAULT FALSE,
|
||||
email VARCHAR(50) NOT NULL DEFAULT '',
|
||||
subject VARCHAR(100) NOT NULL DEFAULT '',
|
||||
message TEXT NOT NULL,
|
||||
message_raw TEXT NOT NULL,
|
||||
password TEXT NOT NULL,
|
||||
deleted_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
is_deleted BOOL NOT NULL DEFAULT FALSE,
|
||||
banned_message TEXT,
|
||||
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);
|
||||
|
||||
CREATE TABLE DBPREFIXfiles(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
post_id BIGINT NOT NULL,
|
||||
file_order INT NOT NULL,
|
||||
original_filename VARCHAR(255) NOT NULL,
|
||||
filename VARCHAR(45) NOT NULL,
|
||||
checksum TEXT NOT NULL,
|
||||
file_size INT NOT NULL,
|
||||
is_spoilered BOOL NOT NULL,
|
||||
thumbnail_width INT NOT NULL,
|
||||
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_file_order_unique UNIQUE(post_id, file_order)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXstaff(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
username VARCHAR(45) NOT NULL,
|
||||
password_checksum VARCHAR(120) NOT NULL,
|
||||
global_rank INT,
|
||||
added_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
last_login TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
is_active BOOL NOT NULL DEFAULT TRUE,
|
||||
CONSTRAINT staff_username_unique UNIQUE(username)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXsessions(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
staff_id BIGINT NOT NULL,
|
||||
expires TIMESTAMP NOT NULL,
|
||||
data VARCHAR(45) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXannouncements(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
staff_id BIGINT NOT NULL,
|
||||
subject VARCHAR(45) NOT NULL,
|
||||
message TEXT NOT NULL,
|
||||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT announcements_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
staff_id BIGINT NOT NULL,
|
||||
board_id BIGINT,
|
||||
banned_for_post_id BIGINT,
|
||||
copy_post_text TEXT NOT NULL,
|
||||
is_thread_ban BOOL NOT NULL,
|
||||
is_active BOOL NOT NULL,
|
||||
ip VARCHAR(45) NOT NULL,
|
||||
issued_at TIMESTAMP NOT NULL,
|
||||
appeal_at TIMESTAMP NOT NULL,
|
||||
expires_at TIMESTAMP NOT NULL,
|
||||
permanent BOOL NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_audit(
|
||||
ip_ban_id BIGINT NOT NULL,
|
||||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
staff_id BIGINT NOT NULL,
|
||||
is_active BOOL NOT NULL,
|
||||
is_thread_ban BOOL NOT NULL,
|
||||
expires_at TIMESTAMP NOT NULL,
|
||||
appeal_at TIMESTAMP NOT NULL,
|
||||
permanent BOOL NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
staff_id BIGINT,
|
||||
ip_ban_id BIGINT NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals_audit(
|
||||
appeal_id BIGINT NOT NULL,
|
||||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
staff_id BIGINT,
|
||||
appeal_text TEXT NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports_audit(
|
||||
report_id BIGINT NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfilename_ban(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
board_id BIGINT,
|
||||
staff_id BIGINT NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXusername_ban(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
board_id BIGINT,
|
||||
staff_id BIGINT NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfile_ban(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
board_id BIGINT,
|
||||
staff_id BIGINT NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXwordfilters(
|
||||
id BIGINT NOT NULL AUTO_INCREMENT UNIQUE PRIMARY KEY,
|
||||
board_dirs VARCHAR(255) DEFAULT '*',
|
||||
staff_id BIGINT NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
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_search_check CHECK (search <> '')
|
||||
);
|
||||
|
||||
INSERT INTO DBPREFIXdatabase_version(component, version)
|
||||
VALUES('gochan', 1);
|
|
@ -1,271 +0,0 @@
|
|||
-- Gochan master template for new database script
|
||||
-- Contains macros in the form [curlybrace open]macro text[curlybrace close]
|
||||
-- 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.
|
||||
-- Database version: 1
|
||||
|
||||
CREATE TABLE DBPREFIXdatabase_version(
|
||||
component VARCHAR(40) NOT NULL PRIMARY KEY,
|
||||
version INT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXsections(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
abbreviation TEXT NOT NULL,
|
||||
position SMALLINT NOT NULL,
|
||||
hidden BOOL NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXboards(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
section_id BIGINT NOT NULL,
|
||||
uri VARCHAR(45) NOT NULL,
|
||||
dir VARCHAR(45) NOT NULL,
|
||||
navbar_position SMALLINT NOT NULL,
|
||||
title VARCHAR(45) NOT NULL,
|
||||
subtitle VARCHAR(64) NOT NULL,
|
||||
description VARCHAR(64) NOT NULL,
|
||||
max_file_size INT NOT NULL,
|
||||
max_threads SMALLINT NOT NULL,
|
||||
default_style VARCHAR(45) NOT NULL,
|
||||
locked BOOL NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
anonymous_name VARCHAR(45) NOT NULL DEFAULT 'Anonymous',
|
||||
force_anonymous BOOL NOT NULL,
|
||||
autosage_after SMALLINT NOT NULL,
|
||||
no_images_after SMALLINT NOT NULL,
|
||||
max_message_length SMALLINT NOT NULL,
|
||||
min_message_length SMALLINT NOT NULL,
|
||||
allow_embeds BOOL NOT NULL,
|
||||
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_dir_unique UNIQUE(dir),
|
||||
CONSTRAINT boards_uri_unique UNIQUE(uri)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXthreads(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
board_id BIGINT NOT NULL,
|
||||
locked BOOL NOT NULL DEFAULT FALSE,
|
||||
stickied BOOL NOT NULL DEFAULT FALSE,
|
||||
anchored BOOL NOT NULL DEFAULT FALSE,
|
||||
cyclical BOOL NOT NULL DEFAULT FALSE,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE INDEX thread_deleted_index ON DBPREFIXthreads(is_deleted);
|
||||
|
||||
CREATE TABLE DBPREFIXposts(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
thread_id BIGINT NOT NULL,
|
||||
is_top_post BOOL NOT NULL DEFAULT FALSE,
|
||||
ip VARCHAR(45) NOT NULL,
|
||||
created_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
name VARCHAR(50) NOT NULL DEFAULT '',
|
||||
tripcode VARCHAR(10) NOT NULL DEFAULT '',
|
||||
is_role_signature BOOL NOT NULL DEFAULT FALSE,
|
||||
email VARCHAR(50) NOT NULL DEFAULT '',
|
||||
subject VARCHAR(100) NOT NULL DEFAULT '',
|
||||
message TEXT NOT NULL,
|
||||
message_raw TEXT NOT NULL,
|
||||
password TEXT NOT NULL,
|
||||
deleted_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
is_deleted BOOL NOT NULL DEFAULT FALSE,
|
||||
banned_message TEXT,
|
||||
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);
|
||||
|
||||
CREATE TABLE DBPREFIXfiles(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
post_id BIGINT NOT NULL,
|
||||
file_order INT NOT NULL,
|
||||
original_filename VARCHAR(255) NOT NULL,
|
||||
filename VARCHAR(45) NOT NULL,
|
||||
checksum TEXT NOT NULL,
|
||||
file_size INT NOT NULL,
|
||||
is_spoilered BOOL NOT NULL,
|
||||
thumbnail_width INT NOT NULL,
|
||||
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_file_order_unique UNIQUE(post_id, file_order)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXstaff(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
username VARCHAR(45) NOT NULL,
|
||||
password_checksum VARCHAR(120) NOT NULL,
|
||||
global_rank INT,
|
||||
added_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
last_login TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
is_active BOOL NOT NULL DEFAULT TRUE,
|
||||
CONSTRAINT staff_username_unique UNIQUE(username)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXsessions(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
staff_id BIGINT NOT NULL,
|
||||
expires TIMESTAMP NOT NULL,
|
||||
data VARCHAR(45) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXannouncements(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
staff_id BIGINT NOT NULL,
|
||||
subject VARCHAR(45) NOT NULL,
|
||||
message TEXT NOT NULL,
|
||||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT announcements_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
staff_id BIGINT NOT NULL,
|
||||
board_id BIGINT,
|
||||
banned_for_post_id BIGINT,
|
||||
copy_post_text TEXT NOT NULL,
|
||||
is_thread_ban BOOL NOT NULL,
|
||||
is_active BOOL NOT NULL,
|
||||
ip VARCHAR(45) NOT NULL,
|
||||
issued_at TIMESTAMP NOT NULL,
|
||||
appeal_at TIMESTAMP NOT NULL,
|
||||
expires_at TIMESTAMP NOT NULL,
|
||||
permanent BOOL NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_audit(
|
||||
ip_ban_id BIGINT NOT NULL,
|
||||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
staff_id BIGINT NOT NULL,
|
||||
is_active BOOL NOT NULL,
|
||||
is_thread_ban BOOL NOT NULL,
|
||||
expires_at TIMESTAMP NOT NULL,
|
||||
appeal_at TIMESTAMP NOT NULL,
|
||||
permanent BOOL NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
staff_id BIGINT,
|
||||
ip_ban_id BIGINT NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals_audit(
|
||||
appeal_id BIGINT NOT NULL,
|
||||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
staff_id BIGINT,
|
||||
appeal_text TEXT NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports_audit(
|
||||
report_id BIGINT NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfilename_ban(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
board_id BIGINT,
|
||||
staff_id BIGINT NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXusername_ban(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
board_id BIGINT,
|
||||
staff_id BIGINT NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfile_ban(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
board_id BIGINT,
|
||||
staff_id BIGINT NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXwordfilters(
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
board_dirs VARCHAR(255) DEFAULT '*',
|
||||
staff_id BIGINT NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
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_search_check CHECK (search <> '')
|
||||
);
|
||||
|
||||
INSERT INTO DBPREFIXdatabase_version(component, version)
|
||||
VALUES('gochan', 1);
|
|
@ -1,271 +0,0 @@
|
|||
-- Gochan master template for new database script
|
||||
-- Contains macros in the form [curlybrace open]macro text[curlybrace close]
|
||||
-- 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.
|
||||
-- Database version: 1
|
||||
|
||||
CREATE TABLE DBPREFIXdatabase_version(
|
||||
component VARCHAR(40) NOT NULL PRIMARY KEY,
|
||||
version INT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXsections(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
abbreviation TEXT NOT NULL,
|
||||
position SMALLINT NOT NULL,
|
||||
hidden BOOL NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXboards(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
section_id BIGINT NOT NULL,
|
||||
uri VARCHAR(45) NOT NULL,
|
||||
dir VARCHAR(45) NOT NULL,
|
||||
navbar_position SMALLINT NOT NULL,
|
||||
title VARCHAR(45) NOT NULL,
|
||||
subtitle VARCHAR(64) NOT NULL,
|
||||
description VARCHAR(64) NOT NULL,
|
||||
max_file_size INT NOT NULL,
|
||||
max_threads SMALLINT NOT NULL,
|
||||
default_style VARCHAR(45) NOT NULL,
|
||||
locked BOOL NOT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
anonymous_name VARCHAR(45) NOT NULL DEFAULT 'Anonymous',
|
||||
force_anonymous BOOL NOT NULL,
|
||||
autosage_after SMALLINT NOT NULL,
|
||||
no_images_after SMALLINT NOT NULL,
|
||||
max_message_length SMALLINT NOT NULL,
|
||||
min_message_length SMALLINT NOT NULL,
|
||||
allow_embeds BOOL NOT NULL,
|
||||
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_dir_unique UNIQUE(dir),
|
||||
CONSTRAINT boards_uri_unique UNIQUE(uri)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXthreads(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
board_id BIGINT NOT NULL,
|
||||
locked BOOL NOT NULL DEFAULT FALSE,
|
||||
stickied BOOL NOT NULL DEFAULT FALSE,
|
||||
anchored BOOL NOT NULL DEFAULT FALSE,
|
||||
cyclical BOOL NOT NULL DEFAULT FALSE,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE INDEX thread_deleted_index ON DBPREFIXthreads(is_deleted);
|
||||
|
||||
CREATE TABLE DBPREFIXposts(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
thread_id BIGINT NOT NULL,
|
||||
is_top_post BOOL NOT NULL DEFAULT FALSE,
|
||||
ip VARCHAR(45) NOT NULL,
|
||||
created_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
name VARCHAR(50) NOT NULL DEFAULT '',
|
||||
tripcode VARCHAR(10) NOT NULL DEFAULT '',
|
||||
is_role_signature BOOL NOT NULL DEFAULT FALSE,
|
||||
email VARCHAR(50) NOT NULL DEFAULT '',
|
||||
subject VARCHAR(100) NOT NULL DEFAULT '',
|
||||
message TEXT NOT NULL,
|
||||
message_raw TEXT NOT NULL,
|
||||
password TEXT NOT NULL,
|
||||
deleted_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
is_deleted BOOL NOT NULL DEFAULT FALSE,
|
||||
banned_message TEXT,
|
||||
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);
|
||||
|
||||
CREATE TABLE DBPREFIXfiles(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
post_id BIGINT NOT NULL,
|
||||
file_order INT NOT NULL,
|
||||
original_filename VARCHAR(255) NOT NULL,
|
||||
filename VARCHAR(45) NOT NULL,
|
||||
checksum TEXT NOT NULL,
|
||||
file_size INT NOT NULL,
|
||||
is_spoilered BOOL NOT NULL,
|
||||
thumbnail_width INT NOT NULL,
|
||||
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_file_order_unique UNIQUE(post_id, file_order)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXstaff(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
username VARCHAR(45) NOT NULL,
|
||||
password_checksum VARCHAR(120) NOT NULL,
|
||||
global_rank INT,
|
||||
added_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
last_login TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
is_active BOOL NOT NULL DEFAULT TRUE,
|
||||
CONSTRAINT staff_username_unique UNIQUE(username)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXsessions(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
staff_id BIGINT NOT NULL,
|
||||
expires TIMESTAMP NOT NULL,
|
||||
data VARCHAR(45) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXannouncements(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
staff_id BIGINT NOT NULL,
|
||||
subject VARCHAR(45) NOT NULL,
|
||||
message TEXT NOT NULL,
|
||||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
CONSTRAINT announcements_staff_id_fk FOREIGN KEY(staff_id) REFERENCES DBPREFIXstaff(id)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
staff_id BIGINT NOT NULL,
|
||||
board_id BIGINT,
|
||||
banned_for_post_id BIGINT,
|
||||
copy_post_text TEXT NOT NULL,
|
||||
is_thread_ban BOOL NOT NULL,
|
||||
is_active BOOL NOT NULL,
|
||||
ip VARCHAR(45) NOT NULL,
|
||||
issued_at TIMESTAMP NOT NULL,
|
||||
appeal_at TIMESTAMP NOT NULL,
|
||||
expires_at TIMESTAMP NOT NULL,
|
||||
permanent BOOL NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_audit(
|
||||
ip_ban_id BIGINT NOT NULL,
|
||||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
staff_id BIGINT NOT NULL,
|
||||
is_active BOOL NOT NULL,
|
||||
is_thread_ban BOOL NOT NULL,
|
||||
expires_at TIMESTAMP NOT NULL,
|
||||
appeal_at TIMESTAMP NOT NULL,
|
||||
permanent BOOL NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
staff_id BIGINT,
|
||||
ip_ban_id BIGINT NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXip_ban_appeals_audit(
|
||||
appeal_id BIGINT NOT NULL,
|
||||
timestamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
staff_id BIGINT,
|
||||
appeal_text TEXT NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports(
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXreports_audit(
|
||||
report_id BIGINT NOT NULL,
|
||||
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
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfilename_ban(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
board_id BIGINT,
|
||||
staff_id BIGINT NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXusername_ban(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
board_id BIGINT,
|
||||
staff_id BIGINT NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXfile_ban(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
board_id BIGINT,
|
||||
staff_id BIGINT NOT NULL,
|
||||
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)
|
||||
);
|
||||
|
||||
CREATE TABLE DBPREFIXwordfilters(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
|
||||
board_dirs VARCHAR(255) DEFAULT '*',
|
||||
staff_id BIGINT NOT NULL,
|
||||
staff_note VARCHAR(255) NOT NULL,
|
||||
issued_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
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_search_check CHECK (search <> '')
|
||||
);
|
||||
|
||||
INSERT INTO DBPREFIXdatabase_version(component, version)
|
||||
VALUES('gochan', 1);
|
9
sample-configs/gochan-sqlite3.service
Normal file
9
sample-configs/gochan-sqlite3.service
Normal file
|
@ -0,0 +1,9 @@
|
|||
[Unit]
|
||||
Description=gochan Daemon
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/local/bin/gochan
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
Loading…
Add table
Add a link
Reference in a new issue