v0.11.1: 权限体系重构 + AI管线优化 + 内容整理
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
-- 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;
|
||||
Reference in New Issue
Block a user