Files
bottohelp/database_migration.sql
T

35 lines
2.3 KiB
SQL

-- Миграция базы данных для внедрения системы ролей
-- Дата создания: 27 октября 2025 г.
-- Цель: Создание таблицы-справочника ролей и обновление таблицы пользователей
-- Создаем таблицу ролей
CREATE TABLE IF NOT EXISTS roles (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT UNIQUE NOT NULL,
display_name TEXT NOT NULL,
description TEXT,
permissions TEXT, -- JSON строка с разрешениями
is_active BOOLEAN DEFAULT 1,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- Вставляем стандартные роли
INSERT OR IGNORE INTO roles (id, name, display_name, description, permissions) VALUES
(1, 'user', 'Пользователь', 'Обычный пользователь чата', '{"can_use_basic_commands": true, "can_play_games": true}'),
(2, 'moderator', 'Модератор', 'Модератор чата с правами управления', '{"can_use_basic_commands": true, "can_play_games": true, "can_moderate": true, "can_warn_users": true}'),
(3, 'admin', 'Администратор', 'Администратор бота с полными правами', '{"can_use_basic_commands": true, "can_play_games": true, "can_moderate": true, "can_warn_users": true, "can_manage_users": true, "can_schedule_posts": true, "can_export_data": true}');
-- Добавляем колонку role_id в таблицу users
ALTER TABLE users ADD COLUMN role_id INTEGER DEFAULT 1;
-- Создаем индекс для быстрого поиска по ролям
CREATE INDEX IF NOT EXISTS idx_users_role_id ON users(role_id);
-- Добавляем foreign key constraint (SQLite не поддерживает добавление FK после создания таблицы)
-- Для существующих баз данных это нужно будет сделать вручную
-- Выводим информацию о миграции
SELECT 'Migration completed: Added roles table and role_id to users table' as migration_status;
SELECT COUNT(*) as roles_count FROM roles;
SELECT COUNT(*) as users_count FROM users;