diff --git a/setup_mysql.sql b/setup_mysql.sql new file mode 100644 index 0000000..994b1bc --- /dev/null +++ b/setup_mysql.sql @@ -0,0 +1,213 @@ +drop database if exists ponepaste; +create database ponepaste; +use ponepaste; + +DELIMITER $$ + +CREATE PROCEDURE ExecuteScript() +BEGIN + DECLARE exit handler for sqlexception + BEGIN + ROLLBACK; + END; + + START TRANSACTION; + + create table admin + ( + id int auto_increment + primary key, + user varchar(250) null, + pass varchar(250) null + ); + + create table admin_history + ( + id int auto_increment + primary key, + last_date varchar(255) null, + ip varchar(255) null + ); + + create table ads + ( + id int auto_increment + primary key, + text_ads longtext null, + ads_1 longtext null, + ads_2 longtext null + ); + + create table ban_user + ( + id int auto_increment + primary key, + ip varchar(16) not null, + last_date varchar(15) not null + ); + + create table page_view + ( + id int auto_increment + primary key, + date varchar(255) null, + tpage varchar(255) null, + tvisit varchar(255) null + ); + + create table pages + ( + id int auto_increment + primary key, + last_date varchar(255) null, + page_name varchar(255) null, + page_title longtext null, + page_content longtext null + ); + + create table sitemap_options + ( + id int auto_increment + primary key, + priority varchar(255) null, + changefreq varchar(255) null + ); + + create table tags + ( + id int auto_increment + primary key, + name varchar(255) not null, + slug varchar(255) not null, + constraint tags_name_uindex + unique (name), + constraint tags_slug_uindex + unique (slug) + ); + + create table user_reports + ( + id int auto_increment + primary key, + m_report longtext not null, + p_report int not null, + rep_reason tinyint(1) not null, + t_report int not null + ); + + create table users + ( + id int auto_increment + primary key, + oauth_uid longtext null, + username varchar(255) null, + email_id varchar(255) null, + platform longtext null, + password varchar(255) null, + verified tinyint(1) default 0 not null, + picture longtext null, + date longtext null, + ip longtext null, + badge tinyint(1) unsigned zerofill default 0 not null, + banned tinyint(1) default 0 not null, + recovery_code_hash varchar(255) not null, + admin tinyint(1) default 0 not null, + admin_password_hash varchar(64) null, + created_at datetime default now() not null, + updated_at datetime not null, + constraint users_username_uindex + unique (username) + ); + + INSERT INTO users (id, username, created_at, updated_at, recovery_code_hash) VALUES (1, 'anonfilly', NOW(), NOW(), ""); + + create table admin_logs + ( + id int auto_increment + primary key, + user_id int not null, + action int not null, + time timestamp default current_timestamp() not null on update current_timestamp(), + ip varchar(16) not null, + constraint admin_logs_users_id_fk + foreign key (user_id) references users (id) + on update cascade on delete cascade + ); + + create table pastes + ( + id int auto_increment + primary key, + title longtext null, + content longtext null, + visible longtext null, + code longtext null, + expiry longtext null, + password longtext null, + encrypt longtext null, + ip longtext null, + views int null, + s_date longtext null, + tagsys longtext null, + user_id int null, + created_at datetime default current_timestamp() null, + updated_at datetime default current_timestamp() null, + constraint users_id_fkey + foreign key (user_id) references users (id) + ); + + create table paste_taggings + ( + id int auto_increment + primary key, + paste_id int null, + tag_id int null, + constraint paste_taggings_uindex + unique (paste_id, tag_id), + constraint paste_taggings_ibfk_2 + foreign key (tag_id) references tags (id), + constraint paste_taggings_ibfk_3 + foreign key (paste_id) references pastes (id) + on delete cascade + ); + + create index tag_id + on paste_taggings (tag_id); + + create table user_favourites + ( + id int auto_increment + primary key, + paste_id int null, + f_time datetime default current_timestamp() not null, + user_id int not null, + constraint paste_id_fk + foreign key (paste_id) references pastes (id), + constraint user_id_fk + foreign key (user_id) references users (id) + ); + + create table user_sessions + ( + id int auto_increment + primary key, + user_id int not null, + token varchar(255) not null, + expire_at datetime not null, + created_at datetime default current_timestamp() not null, + updated_at datetime default current_timestamp() not null, + constraint user_sessions_token_uindex + unique (token), + constraint user_sessions_users_id_fk + foreign key (user_id) references users (id) + ); + + -- Commit the transaction if no errors occurred + COMMIT; +END $$ + +DELIMITER ; + +CALL ExecuteScript(); + +DROP PROCEDURE IF EXISTS ExecuteScript;