--forums 表 – 论坛板块
CREATE TABLE `forums` (
                          `id` BIGINT NOT NULL AUTO_INCREMENT,
                          `slug` VARCHAR(255) NOT NULL UNIQUE,
                          `name` VARCHAR(255) NOT NULL,
                          `description` TEXT,
                          `parent_id` BIGINT DEFAULT NULL,
                          `sort_order` INT DEFAULT 0,
                          `is_locked` BOOLEAN DEFAULT FALSE,
                          PRIMARY KEY (`id`),
                          FOREIGN KEY (`parent_id`) REFERENCES `forums`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
--topics 表 – 帖子主题（一个帖子）
CREATE TABLE `topics` (
                          `id` BIGINT NOT NULL AUTO_INCREMENT,
                          `forum_id` BIGINT NOT NULL,
                          `user_id` BIGINT NOT NULL,
                          `title` VARCHAR(255) NOT NULL,
                          `is_pinned` BOOLEAN DEFAULT FALSE,
                          `is_locked` BOOLEAN DEFAULT FALSE,
                          `created_at` DATETIME NOT NULL,
                          `updated_at` DATETIME NOT NULL,
                          PRIMARY KEY (`id`),
                          FOREIGN KEY (`forum_id`) REFERENCES `forums`(`id`) ON DELETE CASCADE,
                          FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
);

--posts 表 – 帖子内容（主题 + 回复）
CREATE TABLE `posts` (
                         `id` BIGINT NOT NULL AUTO_INCREMENT,
                         `topic_id` BIGINT NOT NULL,
                         `user_id` BIGINT NOT NULL,
                         `content` TEXT NOT NULL,
                         `created_at` DATETIME NOT NULL,
                         `updated_at` DATETIME NOT NULL,
                         `is_deleted` BOOLEAN DEFAULT FALSE,
                         PRIMARY KEY (`id`),
                         FOREIGN KEY (`topic_id`) REFERENCES `topics`(`id`) ON DELETE CASCADE,
                         FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
);

--post_likes 表 – 帖子点赞记录
CREATE TABLE `post_likes` (
                              `user_id` BIGINT NOT NULL,
                              `post_id` BIGINT NOT NULL,
                              `created_at` DATETIME NOT NULL,
                              PRIMARY KEY (`user_id`, `post_id`),
                              FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE,
                              FOREIGN KEY (`post_id`) REFERENCES `posts`(`id`) ON DELETE CASCADE
);

--forum_tags 表 – 标签系统
CREATE TABLE `forum_tags` (
                              `id` BIGINT NOT NULL AUTO_INCREMENT,
                              `name` VARCHAR(50) NOT NULL UNIQUE,
                              `color` VARCHAR(10) DEFAULT '#ccc',
                              PRIMARY KEY (`id`)
);

--中间表：topic_tags
CREATE TABLE `topic_tags` (
                              `topic_id` BIGINT NOT NULL,
                              `tag_id` BIGINT NOT NULL,
                              PRIMARY KEY (`topic_id`, `tag_id`),
                              FOREIGN KEY (`topic_id`) REFERENCES `topics`(`id`) ON DELETE CASCADE,
                              FOREIGN KEY (`tag_id`) REFERENCES `forum_tags`(`id`) ON DELETE CASCADE
);

--topic_views 表 – 浏览记录
CREATE TABLE `topic_views` (
                               `topic_id` BIGINT NOT NULL,
                               `user_id` BIGINT NOT NULL,
                               `last_viewed_at` DATETIME NOT NULL,
                               PRIMARY KEY (`topic_id`, `user_id`),
                               FOREIGN KEY (`topic_id`) REFERENCES `topics`(`id`) ON DELETE CASCADE,
                               FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
);

--topic_subscriptions 表 – 用户关注(收藏）的帖子
CREATE TABLE `topic_subscriptions` (
                                       `user_id` BIGINT NOT NULL,
                                       `topic_id` BIGINT NOT NULL,
                                       `subscribed_at` DATETIME NOT NULL,
                                       PRIMARY KEY (`user_id`, `topic_id`),
                                       FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE,
                                       FOREIGN KEY (`topic_id`) REFERENCES `topics`(`id`) ON DELETE CASCADE
);

--用户论坛活动记录表
CREATE TABLE `user_forum_history` (
                                      `id` BIGINT NOT NULL AUTO_INCREMENT,
                                      `user_id` BIGINT NOT NULL,
                                      `type` ENUM('topic', 'reply') NOT NULL COMMENT '操作类型：发主题或回复',
                                      `target_id` BIGINT NOT NULL COMMENT 'topic_id 或 post_id',
                                      `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
                                      PRIMARY KEY (`id`),
                                      INDEX `idx_user_id` (`user_id`),
                                      INDEX `idx_type_target` (`type`, `target_id`),
                                      CONSTRAINT `fk_ufh_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

--