-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStrangeChat.sql
More file actions
executable file
·116 lines (100 loc) · 4.81 KB
/
StrangeChat.sql
File metadata and controls
executable file
·116 lines (100 loc) · 4.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
START TRANSACTION;
SET time_zone = "+00:00";
create database if not exists StrangeDB;
use StrangeDB;
CREATE TABLE if not exists `users` (
`id` SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`username` varchar(25) UNIQUE,
`password` varchar(256) NOT NULL,
`userrole` varchar(25) NOT NULL DEFAULT "guest",
`status` varchar(25) NOT NULL DEFAULT "offline",
`dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE if not exists `sessions` (
`id` SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`username` varchar(25) UNIQUE,
`session_id` varchar(40) NOT NULL UNIQUE,
`dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
last_activity TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX (`username`),
INDEX (`session_id`),
FOREIGN KEY (`username`) REFERENCES `users` (`username`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE if not exists `messages` (
`id` SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`sender` varchar(25) NOT NULL,
`receiver` varchar(25) NOT NULL DEFAULT "guest",
`visibility_level` TINYINT NOT NULL DEFAULT 3,
`pm` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
`tag` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0,
`text` text NOT NULL,
`dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX (`sender`),
INDEX (`receiver`),
INDEX (`pm`),
INDEX (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE if not exists message_pms (
msg_id SMALLINT UNSIGNED,
user_id SMALLINT UNSIGNED,
PRIMARY KEY (msg_id, user_id),
FOREIGN KEY (msg_id) REFERENCES messages(id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE if not exists message_tags (
msg_id SMALLINT UNSIGNED,
user_id SMALLINT UNSIGNED,
PRIMARY KEY (msg_id, user_id),
FOREIGN KEY (msg_id) REFERENCES messages(id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE
);
CREATE TABLE IF NOT EXISTS `user_settings` (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`username` VARCHAR(25) UNIQUE,
`setting` JSON NOT NULL CHECK (JSON_VALID(setting)),
`hide_enabled` BOOLEAN NOT NULL DEFAULT FALSE,
FOREIGN KEY (`username`) REFERENCES `users` (`username`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `public_notes` (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`username` VARCHAR(25) UNIQUE,
`note` TEXT NOT NULL,
`last_update` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`username`) REFERENCES `users` (`username`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `personal_notes` (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`username` VARCHAR(25) UNIQUE,
`note` TEXT NOT NULL,
`last_update` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`username`) REFERENCES `users` (`username`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `suggestions` (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`username` VARCHAR(25) UNIQUE,
`suggestion` TEXT NOT NULL,
`dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX (`username`),
FOREIGN KEY (`username`) REFERENCES `users` (`username`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO users (username, password, userrole, status)
VALUES ('void', 'voidpassword', 'admin', 'active');
INSERT INTO users (username, password, userrole, status)
VALUES ('SuggestionBox', 'suggestionpassword', 'admin', 'active');
CREATE TABLE gpg_key (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`username` VARCHAR(25) UNIQUE,
`key` TEXT NOT NULL,
`last_update` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`username`) REFERENCES `users` (`username`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE server_settings (
`waitroom` TINYINT(1) default 0,
`waittype` ENUM('60s', 'disabled','mod') NOT NULL default '60s'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE waitroom_users (
username VARCHAR(25) PRIMARY KEY,
last_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
COMMIT;