Files
electron/admin-server/moders/schema.sql
T
2026-08-08 00:57:04 +03:00

70 lines
3.6 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ============================================================
-- 📦 Схема базы данных модераторов: rasch_content
-- Таблицы: users (модераторы), content_blocks (контент), sessions
-- Совместимо с MySQL 8.0+ (CHECK-ограничения требуют 8.0.16+)
-- Для более старых версий закомментируйте строки с CHECK.
--
-- Запуск: mysql -u root -p < schema.sql
-- ============================================================
CREATE DATABASE IF NOT EXISTS rasch_content
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
USE rasch_content;
-- ------------------------------------------------------------
-- Модераторы
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS users (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(100) NOT NULL,
password_hash VARCHAR(255) NOT NULL, -- bcrypt-хэш (60+ символов)
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
UNIQUE KEY uq_users_username (username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ------------------------------------------------------------
-- Модерский контент (вкладки "Информация" и "Профсоюз")
-- HTML-разметка из редактора Quill хранится в content
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS content_blocks (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
tab VARCHAR(20) NOT NULL, -- 'info' | 'union'
type VARCHAR(20) NOT NULL DEFAULT 'text', -- пока только 'text'
content MEDIUMTEXT NOT NULL, -- HTML
created_by INT UNSIGNED DEFAULT NULL, -- FK -> users.id
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_content_blocks_tab (tab),
KEY idx_content_blocks_created_by (created_by),
CONSTRAINT fk_content_blocks_created_by
FOREIGN KEY (created_by) REFERENCES users (id)
ON DELETE SET NULL ON UPDATE CASCADE,
-- Ограничения значений (MySQL 8.0.16+)
CONSTRAINT chk_content_blocks_tab CHECK (tab IN ('info', 'union')),
CONSTRAINT chk_content_blocks_type CHECK (type IN ('text'))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ------------------------------------------------------------
-- Сессии (express-mysql-session)
-- Точная структура из node_modules/express-mysql-session/schema.sql
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS sessions (
session_id varchar(128) COLLATE utf8mb4_bin NOT NULL,
expires int(11) unsigned NOT NULL,
data mediumtext COLLATE utf8mb4_bin,
PRIMARY KEY (session_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ------------------------------------------------------------
-- Демо-модератор
-- Пароль: "moderator123" (bcrypt, соль 10 раундов)
-- После создания измените пароль через админ-панель.
-- ------------------------------------------------------------
INSERT INTO users (username, password_hash) VALUES
('moderator', '$2b$10$7EqJtq98hPqEX7fNZaFWoOhi5SzuYrGTgEdf762vPz0J8wD0GmKMS');