Systemtest_tk/config/database setup.sql
2019-08-08 16:35:16 +03:00

214 lines
9.2 KiB
SQL

/**
* /config/database setup.php
* @version 1.0
* @desc Database setup
* @author Fándly Gergő Zoltán (gergo@systemtest.tk, systemtest.tk)
* @copy 2018 Fándly Gergő Zoltán
* License:
Systemtest.tk website's.
Copyright (C) 2018 Fándly Gergő Zoltán
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
**/
CREATE TABLE `users`(
`id` int(4) UNSIGNED NOT NULL auto_increment,
`username` varchar(65) NOT NULL default '', /* optional */
`fullname` varchar(65) NOT NULL default '',
`email` varchar(65) NOT NULL default '',
`accesslevel` tinyint(1) UNSIGNED NOT NULL default 0, /* 0-regular user; 1-blogger; 2-order handler/helpdesk; 3-admin */
`quota` int(4) NOT NULL default 100, /* quota in MBs; -1 for unlimited */
`orderer` varchar(35) default null,
`password` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`),
FOREIGN KEY (`orderer`) REFERENCES orderers(`reference`) ON DELETE SET NULL
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `login_history`(
`id` int(4) UNSIGNED NOT NULL auto_increment,
`user` int(4) UNSIGNED NOT NULL default 1, /* id of nouser */
`date` timestamp NOT NULL default current_timestamp,
`ip` varchar(45) NOT NULL default '0.0.0.0',
`auth_token` varchar(65) NOT NULL default '',
`user_agent` varchar(500) NOT NULL default '',
`success` tinyint(1) NOT NULL default 0,
PRIMARY KEY (`id`),
FOREIGN KEY (`user`) REFERENCES users(`id`) ON DELETE CASCADE
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `login_remember`(
`id` int(4) UNSIGNED NOT NULL auto_increment,
`user` int(4) UNSIGNED NOT NULL default 0,
`remember_token` varchar(65) NOT NULL default '',
`until` timestamp NOT NULL default current_timestamp,
PRIMARY KEY (`id`),
FOREIGN KEY (`user`) REFERENCES users(`id`) ON DELETE CASCADE
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `login_bans`(
`id` int(4) UNSIGNED NOT NULL auto_increment,
`ip` varchar(45) NOT NULL default '0.0.0.0',
`until` timestamp NOT NULL default current_timestamp,
PRIMARY KEY (`id`)
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `projects` (
`id` int(4) UNSIGNED NOT NULL auto_increment,
`name` varchar(65) NOT NULL default '',
`description` text NOT NULL default '',
`owner` int(4) UNSIGNED NOT NULL default 0,
`path` varchar(125) NOT NULL default '',
`repo` varchar(125) NOT NULL default '',
`status` varchar(65) NOT NULL default '',
`image` text NOT NULL default '',
PRIMARY KEY (`id`),
FOREIGN KEY (`owner`) REFERENCES users(`id`) ON DELETE CASCADE
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `files` (
`id` int(4) UNSIGNED NOT NULL auto_increment,
`token` varchar(35) NOT NULL default '', /* MD5 hash computed from {name}<<<>>>{random 16 char string} */
`owner` int(4) UNSIGNED NOT NULL default 0,
`name` varchar(65) NOT NULL default 0,
`extension` varchar(20) NOT NULL default '.*',
`size` int(4) UNSIGNED NOT NULL default 0,
PRIMARY KEY (`id`),
FOREIGN KEY (`owner`) REFERENCES users(`id`) ON DELETE CASCADE
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `news` (
`id` int(4) UNSIGNED NOT NULL auto_increment,
`owner` int(4) UNSIGNED NOT NULL default 0,
`date` timestamp NOT NULL default current_timestamp,
`subject_eng` varchar(65) NOT NULL default '',
`subject_hun` varchar(65) NOT NULL default '',
`subject_rou` varchar(65) NOT NULL default '',
`content_eng` text NOT NULL default '',
`content_hun` text NOT NULL default '',
`content_rou` text NOT NULL default '',
`published` tinyint(1) UNSIGNED NOT NULL default 0,
PRIMARY KEY (`id`),
FOREIGN KEY (`owner`) REFERENCES users(`id`) ON DELETE CASCADE
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `blog` (
`id` int(4) UNSIGNED NOT NULL auto_increment,
`title` varchar(65) NOT NULL default '',
`owner` int(4) UNSIGNED NOT NULL default 0,
`date` timestamp NOT NULL default current_timestamp,
`content` text NOT NULL default '',
`published` tinyint(1) UNSIGNED NOT NULL default 0,
PRIMARY KEY (`id`),
FOREIGN KEY (`owner`) REFERENCES users(`id`) ON DELETE CASCADE
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `blog_tags` (
`id` int(4) UNSIGNED NOT NULL auto_increment,
`blogentry` int(4) UNSIGNED NOT NULL default 0,
`tag` varchar(65) NOT NULL default '',
PRIMARY KEY (`id`),
FOREIGN KEY (`blogentry`) REFERENCES blog(`id`) ON DELETE CASCADE
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `products` (
`id` int(4) UNSIGNED NOT NULL auto_increment,
`name_eng` varchar(65) NOT NULL default '',
`name_hun` varchar(65) NOT NULL default '',
`name_rou` varchar(65) NOT NULL default '',
`description_eng` text NOT NULL default '',
`description_hun` text NOT NULL default '',
`description_rou` text NOT NULL default '',
`price` int(4) NOT NULL default 0, /* if -2: to be announced, -1: contact us */
PRIMARY KEY (`id`)
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `product_tags` (
`id` int(4) UNSIGNED NOT NULL auto_increment,
`product` int(4) UNSIGNED NOT NULL default 0,
`tag` varchar(65) NOT NULL default '',
PRIMARY KEY (`id`),
FOREIGN KEY (`product`) REFERENCES products(`id`) ON DELETE CASCADE
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `product_images` (
`id` int(4) UNSIGNED NOT NULL auto_increment,
`product` int(4) UNSIGNED NOT NULL default 0,
`image` int(4) UNSIGNED NOT NULL default 0,
PRIMARY KEY (`id`),
FOREIGN KEY (`product`) REFERENCES products(`id`) ON DELETE CASCADE,
FOREIGN KEY (`image`) REFERENCES files(`id`) ON DELETE CASCADE
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `product_reviews` (
`id` int(4) UNSIGNED NOT NULL auto_increment,
`orderid` int(4) UNSIGNED NOT NULL default 0,
`writer` varchar(65) NOT NULL default 'Anonymous',
`rating` tinyint(1) UNSIGNED NOT NULL default 5, /* from 1 to 5 */
`comment` varchar(2000) NOT NULL default '',
PRIMARY KEY (`id`),
FOREIGN KEY (`orderid`) REFERENCES orders(`id`) ON DELETE CASCADE
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `orderers` (
`id` int(4) UNSIGNED NOT NULL auto_increment,
`reference` varchar(35) NOT NULL default '', /* md5 hash computed from {current timestamp}<<<>>>{random 16 char string} */
`name` text NOT NULL default '', /* encrypted */
`address` text NOT NULL default '',
`email` text NOT NULL default '',
`phone` text NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY (`reference`)
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `orders` (
`id` int(4) UNSIGNED NOT NULL auto_increment,
`reference` varchar(35) NOT NULL default '', /* md5 hash reference computed from {current timestamp}<<<>>>{random 16 char string} */
`date` timestamp NOT NULL default current_timestamp,
`product` int(4) UNSIGNED default 0,
`quantity` int(4) UNSIGNED NOT NULL default 1,
`orderer` varchar(35) default '',
`comments` text NOT NULL default '',
`status` tinyint(1) UNSIGNED NOT NULL default 0, /* 0:order placed; 1:preprocessing, produceing; 2:waiting payment; 3:payed; 4:packing; 5:shipped; 6:arrieved; 10:order cancelled */
PRIMARY KEY (`id`),
FOREIGN KEY (`product`) REFERENCES products(`id`) ON DELETE SET NULL,
FOREIGN KEY (`orderer`) REFERENCES orderers(`reference`) ON DELETE SET NULL
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `messages` (
`id` int(4) UNSIGNED NOT NULL auto_increment,
`date` timestamp NOT NULL default current_timestamp,
`subject` varchar(65) NOT NULL default '',
`message` varchar(1500) NOT NULL default '',
`blogentry` int(4) UNSIGNED default NULL,
`product` int(4) UNSIGNED default NULL,
`orderid` int(4) UNSIGNED default NULL,
`replyemail` varchar(65) NOT NULL default '',
PRIMARY KEY (`id`),
FOREIGN KEY (`blogentry`) REFERENCES blog(`id`) ON DELETE SET NULL,
FOREIGN KEY (`product`) REFERENCES products(`id`) ON DELETE SET NULL,
FOREIGN KEY (`orderid`) REFERENCES orders(`id`) ON DELETE SET NULL
) CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE `data_requests` (
`id` int(4) UNSIGNED NOT NULL auto_increment,
`date` timestamp NOT NULL default current_timestamp,
`user` int(4) UNSIGNED NOT NULL default 1,
`pgp` varchar(10000) NOT NULL default '',
`finished` tinyint(1) NOT NULL default 0,
PRIMARY KEY (`id`),
FOREIGN KEY (`user`) REFERENCES users(`id`) ON DELETE CASCADE
) CHARACTER SET utf8 COLLATE utf8_general_ci;
INSERT INTO users (`id`, `username`) VALUES (1, 'nouser');