-- DropForeignKey ALTER TABLE `comments` DROP FOREIGN KEY `comments_user_id_fkey`; -- DropForeignKey ALTER TABLE `forum_posts` DROP FOREIGN KEY `forum_posts_user_id_fkey`; -- DropForeignKey ALTER TABLE `forum_topics` DROP FOREIGN KEY `forum_topics_user_id_fkey`; -- AlterTable ALTER TABLE `bot_adversarial_learnings` ALTER COLUMN `updated_at` DROP DEFAULT; -- AlterTable ALTER TABLE `bot_persona_assignments` ALTER COLUMN `updated_at` DROP DEFAULT; -- AlterTable ALTER TABLE `bot_persona_experiments` MODIFY `significance_level` DOUBLE NOT NULL DEFAULT 0.1, ALTER COLUMN `updated_at` DROP DEFAULT; -- AlterTable ALTER TABLE `bot_persona_metrics` MODIFY `avg_replies` DOUBLE NOT NULL DEFAULT 0, MODIFY `avg_likes` DOUBLE NOT NULL DEFAULT 0, MODIFY `computed_score` DOUBLE NOT NULL DEFAULT 0, ALTER COLUMN `updated_at` DROP DEFAULT; -- AlterTable ALTER TABLE `bot_persona_variants` MODIFY `weight` DOUBLE NOT NULL DEFAULT 0.5, MODIFY `engagement_score` DOUBLE NOT NULL DEFAULT 0, ALTER COLUMN `updated_at` DROP DEFAULT; -- AlterTable ALTER TABLE `collections` ADD COLUMN `is_public` BOOLEAN NOT NULL DEFAULT false, ADD COLUMN `public_slug` VARCHAR(100) NULL, ADD COLUMN `view_count` INTEGER NOT NULL DEFAULT 0; -- AlterTable ALTER TABLE `notifications` MODIFY `type` ENUM('COMMENT_REPLY', 'COMMENT_LIKE', 'TOPIC_REPLY', 'MENTION', 'BEST_ANSWER', 'POST_LIKE', 'TOPIC_LIKE', 'SYSTEM', 'DIGEST') NOT NULL; -- AlterTable ALTER TABLE `tools` ADD COLUMN `screenshots` JSON NULL; -- AlterTable ALTER TABLE `user_achievements` ALTER COLUMN `updated_at` DROP DEFAULT; -- CreateTable CREATE TABLE `feedbacks` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `type` VARCHAR(20) NOT NULL DEFAULT 'suggestion', `content` TEXT NOT NULL, `contact` VARCHAR(255) NULL, `page_url` VARCHAR(500) NULL, `user_id` VARCHAR(50) NULL, `status` VARCHAR(20) NOT NULL DEFAULT 'pending', `admin_note` TEXT NULL, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_at` DATETIME(3) NOT NULL, INDEX `feedbacks_status_created_at_idx`(`status`, `created_at`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `api_keys` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `user_id` INTEGER NOT NULL, `name` VARCHAR(100) NOT NULL, `key_hash` VARCHAR(64) NOT NULL, `key_prefix` VARCHAR(8) NOT NULL, `tier` VARCHAR(20) NOT NULL DEFAULT 'free', `rate_limit` INTEGER NOT NULL DEFAULT 100, `last_used_at` DATETIME(3) NULL, `request_count` INTEGER NOT NULL DEFAULT 0, `is_active` BOOLEAN NOT NULL DEFAULT true, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `expires_at` DATETIME(3) NULL, UNIQUE INDEX `api_keys_key_hash_key`(`key_hash`), INDEX `api_keys_user_id_idx`(`user_id`), INDEX `api_keys_key_prefix_idx`(`key_prefix`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateIndex CREATE INDEX `bot_daily_stats_bot_id_date_idx` ON `bot_daily_stats`(`bot_id`, `date`); -- CreateIndex CREATE INDEX `bot_memories_bot_id_created_at_idx` ON `bot_memories`(`bot_id`, `created_at`); -- CreateIndex CREATE UNIQUE INDEX `collections_public_slug_key` ON `collections`(`public_slug`); -- CreateIndex CREATE INDEX `collections_is_public_view_count_idx` ON `collections`(`is_public`, `view_count`); -- CreateIndex CREATE INDEX `forum_posts_topic_id_is_hidden_created_at_idx` ON `forum_posts`(`topic_id`, `is_hidden`, `created_at`); -- CreateIndex CREATE INDEX `forum_topics_category_id_updated_at_idx` ON `forum_topics`(`category_id`, `updated_at`); -- CreateIndex CREATE INDEX `forum_topics_created_at_idx` ON `forum_topics`(`created_at`); -- CreateIndex CREATE INDEX `skills_status_view_count_idx` ON `skills`(`status`, `view_count`); -- CreateIndex CREATE INDEX `skills_status_created_at_idx` ON `skills`(`status`, `created_at`); -- CreateIndex CREATE INDEX `tools_status_view_count_idx` ON `tools`(`status`, `view_count`); -- CreateIndex CREATE INDEX `tools_status_created_at_idx` ON `tools`(`status`, `created_at`); -- CreateIndex CREATE INDEX `users_is_bot_idx` ON `users`(`is_bot`); -- CreateIndex CREATE INDEX `users_role_idx` ON `users`(`role`); -- AddForeignKey ALTER TABLE `comments` ADD CONSTRAINT `comments_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `forum_topics` ADD CONSTRAINT `forum_topics_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `forum_posts` ADD CONSTRAINT `forum_posts_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `bot_persona_variants` ADD CONSTRAINT `bot_persona_variants_bot_id_fkey` FOREIGN KEY (`bot_id`) REFERENCES `bot_configs`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `bot_persona_variants` ADD CONSTRAINT `bot_persona_variants_experiment_id_fkey` FOREIGN KEY (`experiment_id`) REFERENCES `bot_persona_experiments`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `bot_persona_assignments` ADD CONSTRAINT `bot_persona_assignments_variant_id_fkey` FOREIGN KEY (`variant_id`) REFERENCES `bot_persona_variants`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `bot_persona_metrics` ADD CONSTRAINT `bot_persona_metrics_variant_id_fkey` FOREIGN KEY (`variant_id`) REFERENCES `bot_persona_variants`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `bot_adversarial_learnings` ADD CONSTRAINT `bot_adversarial_learnings_bot_id_fkey` FOREIGN KEY (`bot_id`) REFERENCES `bot_configs`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `bot_cross_forum_affinities` ADD CONSTRAINT `bot_cross_forum_affinities_bot_id_fkey` FOREIGN KEY (`bot_id`) REFERENCES `bot_configs`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `user_achievements` ADD CONSTRAINT `user_achievements_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `user_achievements` ADD CONSTRAINT `user_achievements_achievement_key_fkey` FOREIGN KEY (`achievement_key`) REFERENCES `achievements`(`key`) ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `forum_topic_subscriptions` ADD CONSTRAINT `forum_topic_subscriptions_topic_id_fkey` FOREIGN KEY (`topic_id`) REFERENCES `forum_topics`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `forum_topic_subscriptions` ADD CONSTRAINT `forum_topic_subscriptions_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `api_keys` ADD CONSTRAINT `api_keys_user_id_fkey` FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;