-- CreateTable CREATE TABLE `categories` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, `slug` VARCHAR(50) NOT NULL, `icon` VARCHAR(100) NULL, `parent_id` INTEGER NULL, `sort_order` INTEGER NOT NULL DEFAULT 0, `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_at` DATETIME(3) NOT NULL, UNIQUE INDEX `categories_slug_key`(`slug`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `tools` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL, `slug` VARCHAR(100) NOT NULL, `category_id` INTEGER NOT NULL, `description` TEXT NOT NULL, `logo_url` VARCHAR(255) NULL, `website_url` VARCHAR(255) NOT NULL, `pricing_model` ENUM('free', 'freemium', 'paid', 'subscription') NOT NULL DEFAULT 'freemium', `pricing_detail` VARCHAR(200) NULL, `features` JSON NULL, `tags` JSON NULL, `view_count` INTEGER NOT NULL DEFAULT 0, `status` ENUM('draft', 'published') NOT NULL DEFAULT 'draft', `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_at` DATETIME(3) NOT NULL, UNIQUE INDEX `tools_slug_key`(`slug`), INDEX `tools_category_id_status_idx`(`category_id`, `status`), FULLTEXT INDEX `tools_name_description_idx`(`name`, `description`), PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- CreateTable CREATE TABLE `pending_tools` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL, `slug` VARCHAR(100) NULL, `category_id` INTEGER NULL, `description` TEXT NULL, `logo_url` VARCHAR(255) NULL, `website_url` VARCHAR(255) NULL, `pricing_model` ENUM('free', 'freemium', 'paid', 'subscription') NULL DEFAULT 'freemium', `pricing_detail` VARCHAR(200) NULL, `features` JSON NULL, `tags` JSON NULL, `source_url` VARCHAR(255) NULL, `scraped_at` DATETIME(3) NULL, `status` ENUM('pending', 'approved', 'rejected') NOT NULL DEFAULT 'pending', `created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), `updated_at` DATETIME(3) NOT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- AddForeignKey ALTER TABLE `categories` ADD CONSTRAINT `categories_parent_id_fkey` FOREIGN KEY (`parent_id`) REFERENCES `categories`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE `tools` ADD CONSTRAINT `tools_category_id_fkey` FOREIGN KEY (`category_id`) REFERENCES `categories`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;