Загрузка данных


-- ============================================
-- База данных: blagaya_vest
-- Кодировка: utf8mb4_general_ci (как вы выбрали)
-- ============================================

-- 1. Создаем таблицу пользователей
CREATE TABLE IF NOT EXISTS users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(255) NOT NULL UNIQUE,
    login VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    name VARCHAR(100) NOT NULL,
    photo VARCHAR(500) DEFAULT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- 2. Создаем таблицу отзывов
CREATE TABLE IF NOT EXISTS reviews (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    text TEXT NOT NULL,
    rating TINYINT NOT NULL,
    topic ENUM('faith', 'life', 'family', 'hope', 'gratitude', 'miracle') NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB;

-- 3. Создаем таблицу лайков
CREATE TABLE IF NOT EXISTS likes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    review_id INT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY unique_like (user_id, review_id),
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
    FOREIGN KEY (review_id) REFERENCES reviews(id) ON DELETE CASCADE
) ENGINE=InnoDB;

-- 4. Создаем представление (отзывы + автор + счетчик лайков)
CREATE OR REPLACE VIEW reviews_view AS
SELECT 
    r.id,
    r.text,
    r.rating,
    r.topic,
    r.created_at,
    u.id AS user_id,
    u.name AS author_name,
    COUNT(l.id) AS likes_count
FROM reviews r
JOIN users u ON r.user_id = u.id
LEFT JOIN likes l ON r.id = l.review_id
GROUP BY r.id, r.text, r.rating, r.topic, r.created_at, u.id, u.name
ORDER BY r.created_at DESC;

-- 5. Тестовые пользователи (пароль везде: 123456)
INSERT INTO users (email, login, password, name) VALUES
('alex@mail.ru', 'alex_p', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Александр Петров'),
('elena@mail.ru', 'elena_s', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Елена Смирнова'),
('mikhail@mail.ru', 'mikhail_i', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Михаил Иванов'),
('anna@mail.ru', 'anna_k', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Анна Козлова'),
('maria@mail.ru', 'maria_s', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Мария Соколова'),
('dmitry@mail.ru', 'dmitry_v', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'Дмитрий Волков');

-- 6. Тестовые отзывы
INSERT INTO reviews (user_id, text, rating, topic) VALUES
(1, 'Благая Весть стала для меня настоящим открытием. Здесь я нашёл ответы на многие вопросы о вере.', 3, 'faith'),
(2, 'Очень тёплое и душевное сообщество. Спасибо за вашу работу и поддержку!', 3, 'gratitude'),
(3, 'Статьи о семье помогли мне по-новому взглянуть на отношения с близкими.', 2, 'family'),
(4, 'Читаю Библиотеку каждый день. Толкования очень глубокие и понятные.', 3, 'faith'),
(5, 'Здесь я обрела надежду в трудный период жизни. Спасибо за ваши молитвы.', 3, 'hope'),
(6, 'Интересные дискуссии на форуме. Много мудрых людей.', 2, 'life');

-- 7. Тестовые лайки
INSERT INTO likes (user_id, review_id) VALUES
(1, 2), (1, 3),
(2, 1), (2, 4),
(3, 1), (3, 2),
(4, 1), (4, 3),
(5, 2), (5, 4),
(6, 1), (6, 3);

-- 8. Проверка данных
SELECT * FROM reviews_view;