107 lines
4.8 KiB
SQL
107 lines
4.8 KiB
SQL
-- 论坛增强:点赞/标签/关注/草稿
|
|
-- 2026-06-03
|
|
|
|
-- AlterTable
|
|
ALTER TABLE `forum_categories` ADD COLUMN `follower_count` INTEGER NOT NULL DEFAULT 0;
|
|
|
|
-- AlterTable
|
|
ALTER TABLE `forum_topics` ADD COLUMN `is_featured` BOOLEAN NOT NULL DEFAULT false,
|
|
ADD COLUMN `like_count` INTEGER NOT NULL DEFAULT 0;
|
|
|
|
-- AlterTable
|
|
ALTER TABLE `forum_posts` ADD COLUMN `like_count` INTEGER NOT NULL DEFAULT 0;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `forum_topic_likes` (
|
|
`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),
|
|
|
|
INDEX `forum_topic_likes_user_id_idx`(`user_id`),
|
|
UNIQUE INDEX `forum_topic_likes_topic_id_user_id_key`(`topic_id`, `user_id`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `forum_post_likes` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`post_id` INTEGER NOT NULL,
|
|
`user_id` INTEGER NOT NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
INDEX `forum_post_likes_user_id_idx`(`user_id`),
|
|
UNIQUE INDEX `forum_post_likes_post_id_user_id_key`(`post_id`, `user_id`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `forum_category_follows` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`category_id` INTEGER NOT NULL,
|
|
`user_id` INTEGER NOT NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
INDEX `forum_category_follows_user_id_idx`(`user_id`),
|
|
UNIQUE INDEX `forum_category_follows_category_id_user_id_key`(`category_id`, `user_id`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `forum_tags` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`name` VARCHAR(20) NOT NULL,
|
|
`slug` VARCHAR(30) NOT NULL,
|
|
`topic_count` INTEGER NOT NULL DEFAULT 0,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
UNIQUE INDEX `forum_tags_name_key`(`name`),
|
|
UNIQUE INDEX `forum_tags_slug_key`(`slug`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `forum_topic_tags` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`topic_id` INTEGER NOT NULL,
|
|
`tag_id` INTEGER NOT NULL,
|
|
|
|
INDEX `forum_topic_tags_tag_id_idx`(`tag_id`),
|
|
UNIQUE INDEX `forum_topic_tags_topic_id_tag_id_key`(`topic_id`, `tag_id`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `forum_drafts` (
|
|
`id` INTEGER NOT NULL AUTO_INCREMENT,
|
|
`user_id` INTEGER NOT NULL,
|
|
`category_id` INTEGER NULL,
|
|
`title` VARCHAR(100) NULL,
|
|
`content` TEXT NOT NULL,
|
|
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updated_at` DATETIME(3) NOT NULL,
|
|
|
|
INDEX `forum_drafts_user_id_updated_at_idx`(`user_id`, `updated_at`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `forum_topic_likes` ADD CONSTRAINT `forum_topic_likes_topic_id_fkey` FOREIGN KEY (`topic_id`) REFERENCES `forum_topics`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE `forum_topic_likes` ADD CONSTRAINT `forum_topic_likes_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
ALTER TABLE `forum_post_likes` ADD CONSTRAINT `forum_post_likes_post_id_fkey` FOREIGN KEY (`post_id`) REFERENCES `forum_posts`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE `forum_post_likes` ADD CONSTRAINT `forum_post_likes_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
ALTER TABLE `forum_category_follows` ADD CONSTRAINT `forum_category_follows_category_id_fkey` FOREIGN KEY (`category_id`) REFERENCES `forum_categories`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE `forum_category_follows` ADD CONSTRAINT `forum_category_follows_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
ALTER TABLE `forum_topic_tags` ADD CONSTRAINT `forum_topic_tags_topic_id_fkey` FOREIGN KEY (`topic_id`) REFERENCES `forum_topics`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
ALTER TABLE `forum_topic_tags` ADD CONSTRAINT `forum_topic_tags_tag_id_fkey` FOREIGN KEY (`tag_id`) REFERENCES `forum_tags`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
ALTER TABLE `forum_drafts` ADD CONSTRAINT `forum_drafts_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX `forum_topics_category_id_is_pinned_created_at_idx` ON `forum_topics`(`category_id`, `is_pinned`, `created_at`);
|
|
CREATE INDEX `forum_topics_is_featured_last_reply_at_idx` ON `forum_topics`(`is_featured`, `last_reply_at`);
|
|
CREATE INDEX `forum_posts_user_id_idx` ON `forum_posts`(`user_id`);
|