2021-09-27 00:34:26 +02:00
|
|
|
/*
|
|
|
|
DROP DATABASE IF EXISTS nabu;
|
|
|
|
*/
|
|
|
|
|
|
|
|
CREATE DATABASE IF NOT EXISTS nabu
|
|
|
|
CHARACTER SET = 'utf8mb4'
|
|
|
|
COLLATE = 'utf8mb4_general_ci';
|
|
|
|
|
|
|
|
USE nabu;
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS `roles` (
|
|
|
|
`id` TINYINT UNSIGNED NOT NULL,
|
|
|
|
`name` VARCHAR(20) NOT NULL,
|
|
|
|
CONSTRAINT roles_id_pk PRIMARY KEY(id),
|
|
|
|
CONSTRAINT roles_name_uk UNIQUE(name)
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS `users` (
|
2022-01-20 09:58:26 +01:00
|
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
|
|
`role_id` TINYINT UNSIGNED NOT NULL DEFAULT 3,
|
|
|
|
`name` VARCHAR(255) NOT NULL,
|
|
|
|
`username` VARCHAR(255) NOT NULL,
|
|
|
|
`email` VARCHAR(255),
|
|
|
|
`password` VARCHAR(255) NOT NULL,
|
|
|
|
`activated` TINYINT(1) NOT NULL DEFAULT FALSE,
|
|
|
|
`registration_date` DATETIME(0) NOT NULL,
|
|
|
|
CONSTRAINT users_id_pk PRIMARY KEY(id),
|
|
|
|
CONSTRAINT users_username_uk UNIQUE(username),
|
|
|
|
CONSTRAINT users_email_uk UNIQUE(email),
|
|
|
|
CONSTRAINT users_role_id_fk FOREIGN KEY(role_id) REFERENCES roles(id) ON UPDATE RESTRICT ON DELETE RESTRICT
|
2021-09-27 00:34:26 +02:00
|
|
|
);
|
|
|
|
|
2022-01-20 09:58:26 +01:00
|
|
|
CREATE TABLE IF NOT EXISTS `authentications` (
|
2022-01-24 22:28:48 +01:00
|
|
|
`id` INT UNSIGNED NOT NULL,
|
|
|
|
`hash` VARCHAR(255) NOT NULL,
|
|
|
|
`expiration` INT UNSIGNED NOT NULL,
|
2022-01-20 09:58:26 +01:00
|
|
|
CONSTRAINT authentications_id_pk PRIMARY KEY(id),
|
|
|
|
CONSTRAINT authentications_id_fk FOREIGN KEY(id) REFERENCES users(id) ON UPDATE CASCADE ON DELETE CASCADE
|
2021-09-27 00:34:26 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS `profiles` (
|
|
|
|
`id` INT UNSIGNED NOT NULL,
|
|
|
|
`avatar` VARCHAR(255),
|
|
|
|
`background` VARCHAR(255),
|
|
|
|
`description` VARCHAR(255),
|
|
|
|
CONSTRAINT profiles_id_pk PRIMARY KEY(id),
|
|
|
|
CONSTRAINT profiles_id_fk FOREIGN KEY(id) REFERENCES users(id) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
|
|
|
CONSTRAINT profiles_avatar_uk UNIQUE(avatar),
|
|
|
|
CONSTRAINT profiles_background_uk UNIQUE(background)
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS `articles` (
|
|
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
|
|
`user_id` INT UNSIGNED NOT NULL,
|
|
|
|
`title` VARCHAR(246) NOT NULL,
|
|
|
|
`synopsis` VARCHAR(255) NOT NULL,
|
2022-02-16 20:23:17 +01:00
|
|
|
`body` MEDIUMTEXT NOT NULL,
|
2021-09-27 00:34:26 +02:00
|
|
|
`slug` VARCHAR(255) NOT NULL,
|
|
|
|
`cover` VARCHAR(255),
|
|
|
|
`authorized` TINYINT(1) NOT NULL DEFAULT FALSE,
|
|
|
|
`creation_date` DATETIME(0) NOT NULL,
|
|
|
|
`modification_date` DATETIME(0),
|
|
|
|
CONSTRAINT articles_id_pk PRIMARY KEY(id),
|
|
|
|
CONSTRAINT articles_user_id_fk FOREIGN KEY(user_id) REFERENCES users(id) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
|
|
|
CONSTRAINT articles_slug_uk UNIQUE(slug),
|
|
|
|
CONSTRAINT articles_cover_uk UNIQUE(cover)
|
|
|
|
);
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS `authorizations` (
|
2022-02-18 23:35:28 +01:00
|
|
|
`id` INT UNSIGNED NOT NULL,
|
2021-09-27 00:34:26 +02:00
|
|
|
`user_id` INT UNSIGNED NOT NULL,
|
|
|
|
`authorization_date` DATETIME(0) NOT NULL,
|
2022-02-18 23:35:28 +01:00
|
|
|
CONSTRAINT authorizations_pk PRIMARY KEY(id),
|
|
|
|
CONSTRAINT authorizations_id_fk FOREIGN KEY(id) REFERENCES articles(id) ON UPDATE CASCADE ON DELETE CASCADE,
|
|
|
|
CONSTRAINT authorizations_user_id_fk FOREIGN KEY(user_id) REFERENCES users(id) ON UPDATE RESTRICT ON DELETE RESTRICT
|
2021-09-27 00:34:26 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS `comments` (
|
2022-02-21 22:00:13 +01:00
|
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
2021-09-27 00:34:26 +02:00
|
|
|
`user_id` INT UNSIGNED NOT NULL,
|
|
|
|
`article_id` INT UNSIGNED NOT NULL,
|
|
|
|
`body` VARCHAR(255) NOT NULL,
|
|
|
|
`comment_date` DATETIME(0) NOT NULL,
|
2022-02-21 22:00:13 +01:00
|
|
|
CONSTRAINT comments_pk PRIMARY KEY(id),
|
|
|
|
CONSTRAINT comments_uk UNIQUE(user_id, comment_date),
|
2021-09-27 00:34:26 +02:00
|
|
|
CONSTRAINT comments_user_id_fk FOREIGN KEY(user_id) REFERENCES users(id) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
2022-02-18 23:35:28 +01:00
|
|
|
CONSTRAINT comments_article_id_fk FOREIGN KEY(article_id) REFERENCES articles(id) ON UPDATE CASCADE ON DELETE CASCADE
|
2021-09-27 00:34:26 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS `favorites` (
|
2022-02-21 22:00:13 +01:00
|
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
2021-09-27 00:34:26 +02:00
|
|
|
`user_id` INT UNSIGNED NOT NULL,
|
|
|
|
`article_id` INT UNSIGNED NOT NULL,
|
2022-02-21 22:00:13 +01:00
|
|
|
CONSTRAINT favorites_pk PRIMARY KEY(id),
|
|
|
|
CONSTRAINT favorites_uk UNIQUE(user_id, article_id),
|
2021-09-27 00:34:26 +02:00
|
|
|
CONSTRAINT favorites_user_id_fk FOREIGN KEY(user_id) REFERENCES users(id) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
2022-02-18 23:35:28 +01:00
|
|
|
CONSTRAINT favorites_article_id_fk FOREIGN KEY(article_id) REFERENCES articles(id) ON UPDATE CASCADE ON DELETE CASCADE
|
2021-09-27 00:34:26 +02:00
|
|
|
);
|
|
|
|
|
2022-03-12 00:28:07 +01:00
|
|
|
CREATE TABLE IF NOT EXISTS `suscriptions` (
|
|
|
|
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
|
|
`email` VARCHAR(255) NOT NULL,
|
|
|
|
`hash` VARCHAR(255) NOT NULL,
|
2022-04-19 03:05:48 +02:00
|
|
|
CONSTRAINT suscriptions_id_pk PRIMARY KEY(id),
|
2022-03-12 00:28:07 +01:00
|
|
|
CONSTRAINT suscriptions_email_uk UNIQUE(email)
|
|
|
|
);
|
|
|
|
|
2021-09-27 00:34:26 +02:00
|
|
|
INSERT INTO roles(id, name) VALUES(1, 'ADMIN'), (2, 'MODERATOR'), (3, 'USER');
|
2022-02-25 19:33:09 +01:00
|
|
|
INSERT INTO users VALUES(1, 1, 'root', 'root', 'root@example.com', '$2y$12$.1ycdL5xs4nOpQ3GXga7m.IFNtfMgV5nKVe4R87B3CypgigBaJ55C', TRUE, NOW());
|
|
|
|
INSERT INTO profiles(id) VALUES(1);
|