This commit is contained in:
parent
6c8793ff68
commit
57e5f69bc8
161
docs/database.sql
Normal file
161
docs/database.sql
Normal file
|
@ -0,0 +1,161 @@
|
|||
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
SET time_zone = "+00:00";
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS `crss` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
|
||||
|
||||
USE `crss`;
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `governments` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`nation_id` bigint(20) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `nation_id` (`nation_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `government_officials` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`government_id` bigint(20) NOT NULL,
|
||||
`user_id` bigint(20) NOT NULL,
|
||||
`role_id` bigint(20) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `government_id` (`government_id`),
|
||||
KEY `user_id` (`user_id`),
|
||||
KEY `role_id` (`role_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `government_roles` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`government_id` bigint(20) NOT NULL,
|
||||
`level` int(11) NOT NULL,
|
||||
`name` varchar(48) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `government_id` (`government_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `images` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`user_id` bigint(20) NOT NULL,
|
||||
`name` varchar(64) NOT NULL,
|
||||
`alt` text NOT NULL,
|
||||
`type` text NOT NULL,
|
||||
`created_at` timestamp NOT NULL DEFAULT current_timestamp(),
|
||||
`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `image_user` (`user_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `image_locations` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`image_id` bigint(20) NOT NULL,
|
||||
`x` int(11) NOT NULL,
|
||||
`y` int(11) NOT NULL,
|
||||
`z` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `image_id` (`image_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `image_sizes` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`image_id` bigint(20) NOT NULL,
|
||||
`width` int(11) NOT NULL,
|
||||
`height` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `image_id` (`image_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `mc_links` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`user_id` bigint(20) NOT NULL,
|
||||
`uuid` text NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `user_id` (`user_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `mc_link_codes` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` bigint(20) NOT NULL,
|
||||
`code` varchar(8) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `code` (`code`),
|
||||
KEY `user_id` (`user_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `nations` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`code` varchar(3) NOT NULL,
|
||||
`name` varchar(48) NOT NULL,
|
||||
`created_at` timestamp NOT NULL DEFAULT current_timestamp(),
|
||||
`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `nation_points` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`nation_id` bigint(20) NOT NULL,
|
||||
`x` int(11) NOT NULL,
|
||||
`z` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `nation_id` (`nation_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `users` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`username` varchar(32) NOT NULL,
|
||||
`display_name` varchar(64) NOT NULL,
|
||||
`email` varchar(320) NOT NULL,
|
||||
`avatar` text NOT NULL,
|
||||
`banner` text NOT NULL,
|
||||
`accent_color` int(11) NOT NULL,
|
||||
`discord_id` bigint(20) NOT NULL,
|
||||
`permissions` int(11) NOT NULL,
|
||||
`badges` int(11) NOT NULL,
|
||||
`created_at` timestamp NOT NULL DEFAULT current_timestamp(),
|
||||
`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `username` (`username`),
|
||||
UNIQUE KEY `email` (`email`),
|
||||
UNIQUE KEY `discord_id` (`discord_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `user_sessions` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` bigint(20) NOT NULL,
|
||||
`token` varchar(1024) NOT NULL,
|
||||
`dc_access_token` text NOT NULL,
|
||||
`dc_refresh_token` text NOT NULL,
|
||||
`dc_id_token` text NOT NULL,
|
||||
`user_agent` text NOT NULL,
|
||||
`ip` text NOT NULL,
|
||||
`created_at` timestamp NOT NULL DEFAULT current_timestamp(),
|
||||
`expires_at` timestamp NOT NULL DEFAULT current_timestamp(),
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `token` (`token`) USING HASH,
|
||||
KEY `user_id` (`user_id`)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `user_settings` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`user_id` bigint(20) NOT NULL,
|
||||
`settings` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`settings`)),
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `user_id` (`user_id`)
|
||||
);
|
||||
|
||||
--- Foreign keys
|
||||
|
||||
ALTER TABLE `governments` ADD CONSTRAINT `nation` FOREIGN KEY (`nation_id`) REFERENCES `nations` (`id`) ON DELETE CASCADE;
|
||||
ALTER TABLE `government_officials` ADD CONSTRAINT `government_official` FOREIGN KEY (`government_id`) REFERENCES `governments` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `government_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, ADD CONSTRAINT `role` FOREIGN KEY (`role_id`) REFERENCES `government_roles` (`id`) ON DELETE CASCADE;
|
||||
ALTER TABLE `government_roles` ADD CONSTRAINT `government_role` FOREIGN KEY (`government_id`) REFERENCES `governments` (`id`) ON DELETE CASCADE;
|
||||
ALTER TABLE `images` ADD CONSTRAINT `image_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
|
||||
ALTER TABLE `image_locations` ADD CONSTRAINT `image_location_id` FOREIGN KEY (`image_id`) REFERENCES `images` (`id`) ON DELETE CASCADE;
|
||||
ALTER TABLE `image_sizes` ADD CONSTRAINT `image_size` FOREIGN KEY (`image_id`) REFERENCES `images` (`id`) ON DELETE CASCADE;
|
||||
ALTER TABLE `mc_links` ADD CONSTRAINT `mc_link_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
|
||||
ALTER TABLE `mc_link_codes` ADD CONSTRAINT `mc_link_code_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
|
||||
ALTER TABLE `nation_points` ADD CONSTRAINT `nation_point_id` FOREIGN KEY (`nation_id`) REFERENCES `nations` (`id`) ON DELETE CASCADE;
|
||||
ALTER TABLE `user_sessions` ADD CONSTRAINT `session_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
|
||||
ALTER TABLE `user_settings` ADD CONSTRAINT `setting_user_id` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE;
|
||||
|
||||
COMMIT;
|
Loading…
Reference in a new issue