54 lines
3.0 KiB
SQL
54 lines
3.0 KiB
SQL
-- 论坛第三阶段增强:通知/收藏/举报/嵌套回复
|
|
-- 2026-06-04
|
|
|
|
-- AlterTable: forum_topics 加 is_hidden 字段
|
|
ALTER TABLE `forum_topics` ADD COLUMN `is_hidden` BOOLEAN NOT NULL DEFAULT false;
|
|
ALTER TABLE `forum_topics` ADD INDEX `forum_topics_is_hidden_idx`(`is_hidden`);
|
|
|
|
-- AlterTable: forum_posts 加 reply_to_id / reply_to_snapshot
|
|
ALTER TABLE `forum_posts` ADD COLUMN `reply_to_id` INTEGER NULL;
|
|
ALTER TABLE `forum_posts` ADD COLUMN `reply_to_snapshot` VARCHAR(300) NULL;
|
|
ALTER TABLE `forum_posts` ADD CONSTRAINT `forum_posts_reply_to_id_fkey` FOREIGN KEY (`reply_to_id`) REFERENCES `forum_posts`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|
|
ALTER TABLE `forum_posts` ADD INDEX `forum_posts_reply_to_id_idx`(`reply_to_id`);
|
|
|
|
-- AlterTable: forum_topics 加联合全文索引
|
|
ALTER TABLE `forum_topics` ADD FULLTEXT INDEX `forum_topics_title_content_idx`(`title`, `content`);
|
|
|
|
-- CreateTable: 收藏
|
|
CREATE TABLE `forum_topic_bookmarks` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`topic_id` INTEGER NOT NULL,
|
|
`user_id` INTEGER NOT NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE INDEX `forum_topic_bookmarks_topic_id_user_id_key`(`topic_id`, `user_id`),
|
|
INDEX `forum_topic_bookmarks_user_id_created_at_idx`(`user_id`, `created_at`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
ALTER TABLE `forum_topic_bookmarks` ADD CONSTRAINT `forum_topic_bookmarks_topic_id_fkey` FOREIGN KEY (`topic_id`) REFERENCES `forum_topics`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE `forum_topic_bookmarks` ADD CONSTRAINT `forum_topic_bookmarks_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- CreateTable: 举报
|
|
CREATE TABLE `forum_reports` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`reporter_id` INTEGER NOT NULL,
|
|
`topic_id` INTEGER NULL,
|
|
`post_id` INTEGER NULL,
|
|
`reason` VARCHAR(50) NOT NULL,
|
|
`detail` VARCHAR(500) NULL,
|
|
`status` VARCHAR(20) NOT NULL DEFAULT 'pending',
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`resolved_at` DATETIME(3) NULL,
|
|
PRIMARY KEY (`id`),
|
|
INDEX `forum_reports_status_created_at_idx`(`status`, `created_at`),
|
|
INDEX `forum_reports_reporter_id_idx`(`reporter_id`),
|
|
INDEX `forum_reports_topic_id_idx`(`topic_id`),
|
|
INDEX `forum_reports_post_id_idx`(`post_id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
ALTER TABLE `forum_reports` ADD CONSTRAINT `forum_reports_reporter_id_fkey` FOREIGN KEY (`reporter_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE `forum_reports` ADD CONSTRAINT `forum_reports_topic_id_fkey` FOREIGN KEY (`topic_id`) REFERENCES `forum_topics`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AlterTable: notifications 增加新枚举值
|
|
ALTER TABLE `notifications` MODIFY COLUMN `type` ENUM('COMMENT_REPLY','COMMENT_LIKE','TOPIC_REPLY','MENTION','BEST_ANSWER','POST_LIKE','TOPIC_LIKE','SYSTEM') NOT NULL;
|