Продолжил настраивать БД

This commit is contained in:
Shr3dd3r 2023-08-06 03:13:17 +03:00
parent acede7d03b
commit e92f792640
2 changed files with 65 additions and 9 deletions

24
TODO.md
View File

@ -18,13 +18,35 @@
- Мыло
- Пароль
- Айди приглашения
- Роли (админ, модер, участник) и права доступа
- Роли
- Новичок
- Может оценивать посты, но не более n в день
- Может создавать посты, но не более n в день
- Может удалять свои посты
- Может устанавливать себе аватарку
- Проверенный
- Нет лимитов на оценку постов
- Нет лимитов на создание постов
- Может редактировать свои посты
- Может оставлять комментарии
- Модератор
- Может банить проверенных и новичков
- Может удалять чужие посты
- Может устанавливать блокировку редактирования поста
- Может создавать инвайты
- Администратор
- Доступ к детальной стате, управлению БД и БКК
- Может банить кого угодно
- Может удалять чьи угодно аккаунты
- Может редактировать чужие посты
- Аватарки
- Бан
- Полное удаление
- Удаление всех постов
- Статистика по аккаунту
- Статистика по всем аккаунтам
- Приглашения
- Регистрация по приглашению автоматически даёт роль "проверенный"
- Пост с картинкой
- Рекодирование пикчи в низкое разрешение для превью
- Описание

View File

@ -22,17 +22,51 @@ mysql -u e949 -p
```mysql
USE e949;
CREATE TABLE users (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier of user',
created_at TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'When account was created',
login VARCHAR(255) NOT NULL COMMENT 'User login',
email VARCHAR(255) NULL COMMENT 'User e-mail address',
password_hash BINARY(32) NOT NULL COMMENT 'User password hash',
salt VARCHAR(8) NOT NULL COMMENT 'User salt, used for password hash',
avatar_path VARCHAR(255) NULL COMMENT 'Path or URL to avatar picture',
role ENUM('newbie', 'verified', 'mod', 'admin') NOT NULL COMMENT 'Assigned role',
banned BOOL NOT NULL DEFAULT FALSE COMMENT 'If user is banned',
invite_id CHAR(32) NULL COMMENT 'Invite ID used for account registration'
);
CREATE TABLE posts (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier of post',
author_id BIGINT UNSIGNED NOT NULL COMMENT 'Identifier of post author',
comment_section_id BIGINT UNSIGNED NULL COMMENT 'Identifier of post comment section',
posted_at TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'When post was published',
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier of post',
author_id INT UNSIGNED NOT NULL COMMENT 'Identifier of post author',
comment_section_id INT UNSIGNED NULL COMMENT 'Identifier of post comment section',
created_at TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'When post was published',
tags VARCHAR(2048) NOT NULL COMMENT 'Comma-delimited list of post tags',
title VARCHAR(8192) NULL COMMENT 'Caption for the post',
votes_up INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Amount of positive reactions',
votes_down INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Amount of negative reactions',
views BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Amount of post views',
pic_path VARCHAR(256) NOT NULL COMMENT 'Path or URL of picture',
preview_path VARCHAR(256) NULL COMMENT 'Path or URL of preview version of picture'
);
views INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Amount of post views',
pic_path VARCHAR(255) NOT NULL COMMENT 'Path or URL of picture',
preview_path VARCHAR(255) NULL COMMENT 'Path or URL of preview version of picture'
comments_enabled BOOL NOT NULL COMMENT 'If comments are enabled',
edit_lock BOOL NOT NULL DEFAULT FALSE COMMENT 'If redaction of post is locked for anyone, except mods and admins'
);
CREATE TABLE comments (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier of comment',
author_id INT UNSIGNED NOT NULL COMMENT 'Identifier of comment author',
comment_section_id INT UNSIGNED NOT NULL COMMENT 'Identifier of comment section to which the comment belongs',
created_at TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'When comment was published',
contents VARCHAR(8192) NOT NULL COMMENT 'Text of comment',
needs_check BOOL NOT NULL DEFAULT FALSE COMMENT 'If comment needs approval of moderation'
);
CREATE TABLE actions (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier of action',
author_id INT UNSIGNED NULL COMMENT 'ID of user, who performed action',
created_at TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'When action was performed',
category ENUM('acc_mod', 'publ_mod', 'post', 'comment', 'admin', 'other') NOT NULL COMMENT 'Category of performed action: accounts/publications moderation, etc.',
description VARCHAR(8192) NOT NULL COMMENT 'Description of action'
);
CREATE TABLE invites (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique identifier of invite',
author_id INT UNSIGNED NULL COMMENT 'ID of user, who created invite',
uses_last SMALLINT UNSIGNED NOT NULL COMMENT 'Remaining uses of invite'
);
```