| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512 |
- -- CreateTable
- CREATE TABLE `User` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `phone` VARCHAR(191) NULL,
- `openid` VARCHAR(191) NULL,
- `nickname` VARCHAR(191) NOT NULL DEFAULT '用户',
- `avatar` VARCHAR(191) NOT NULL DEFAULT '',
- `memberLevel` INTEGER NOT NULL DEFAULT 0,
- `memberExpireAt` DATETIME(3) NULL,
- `dailyUsage` INTEGER NOT NULL DEFAULT 0,
- `lastUsageDate` VARCHAR(191) NOT NULL DEFAULT '',
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- `updatedAt` DATETIME(3) NOT NULL,
- `usedAudioMinutes` INTEGER NOT NULL DEFAULT 0,
- `subscriptionResetDate` DATETIME(3) NULL,
- UNIQUE INDEX `User_phone_key`(`phone`),
- UNIQUE INDEX `User_openid_key`(`openid`),
- INDEX `User_phone_idx`(`phone`),
- INDEX `User_openid_idx`(`openid`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `Order` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NOT NULL,
- `orderNo` VARCHAR(191) NOT NULL,
- `planId` INTEGER NULL,
- `productType` VARCHAR(191) NOT NULL,
- `amount` DECIMAL(10, 2) NOT NULL,
- `status` VARCHAR(191) NOT NULL DEFAULT 'pending',
- `paymentMethod` VARCHAR(191) NULL,
- `paymentId` VARCHAR(191) NULL,
- `paidAt` DATETIME(3) NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- `updatedAt` DATETIME(3) NOT NULL,
- UNIQUE INDEX `Order_orderNo_key`(`orderNo`),
- INDEX `Order_userId_createdAt_idx`(`userId`, `createdAt`),
- INDEX `Order_orderNo_idx`(`orderNo`),
- INDEX `Order_status_idx`(`status`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `PlayRecord` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NOT NULL,
- `chapterId` INTEGER NOT NULL,
- `progress` DOUBLE NOT NULL DEFAULT 0,
- `duration` DOUBLE NOT NULL DEFAULT 0,
- `updatedAt` DATETIME(3) NOT NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- INDEX `PlayRecord_userId_idx`(`userId`),
- INDEX `PlayRecord_chapterId_idx`(`chapterId`),
- UNIQUE INDEX `PlayRecord_userId_chapterId_key`(`userId`, `chapterId`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `UserPreference` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NOT NULL,
- `playSpeed` DOUBLE NOT NULL DEFAULT 1.0,
- `quality` VARCHAR(191) NOT NULL DEFAULT 'standard',
- `theme` VARCHAR(191) NOT NULL DEFAULT 'light',
- `defaultVoiceId` VARCHAR(191) NULL DEFAULT 'cherry',
- `defaultVolume` INTEGER NOT NULL DEFAULT 50,
- `autoPlayNext` BOOLEAN NOT NULL DEFAULT true,
- `wifiOnlyDownload` BOOLEAN NOT NULL DEFAULT false,
- `updatedAt` DATETIME(3) NOT NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- UNIQUE INDEX `UserPreference_userId_key`(`userId`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `Favorite` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NOT NULL,
- `bookId` INTEGER NOT NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- INDEX `Favorite_userId_idx`(`userId`),
- INDEX `Favorite_bookId_idx`(`bookId`),
- UNIQUE INDEX `Favorite_userId_bookId_key`(`userId`, `bookId`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `Comment` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NOT NULL,
- `chapterId` INTEGER NOT NULL,
- `content` TEXT NOT NULL,
- `rating` INTEGER NOT NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- INDEX `Comment_chapterId_idx`(`chapterId`),
- INDEX `Comment_userId_idx`(`userId`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `Notification` (
- `id` VARCHAR(191) NOT NULL,
- `userId` VARCHAR(191) NOT NULL,
- `title` VARCHAR(191) NOT NULL,
- `content` TEXT NOT NULL,
- `isRead` BOOLEAN NOT NULL DEFAULT false,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `Book` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NULL,
- `title` VARCHAR(191) NOT NULL,
- `subtitle` VARCHAR(191) NULL,
- `description` TEXT NOT NULL,
- `coverUrl` VARCHAR(191) NULL,
- `targetAudience` VARCHAR(191) NOT NULL DEFAULT '通用',
- `style` VARCHAR(191) NOT NULL DEFAULT '专业严谨',
- `bookScale` VARCHAR(191) NOT NULL DEFAULT '标准教程',
- `totalChapters` INTEGER NOT NULL DEFAULT 10,
- `estimatedWords` INTEGER NOT NULL DEFAULT 0,
- `status` VARCHAR(191) NOT NULL DEFAULT 'draft',
- `progress` INTEGER NOT NULL DEFAULT 0,
- `isPublished` BOOLEAN NOT NULL DEFAULT false,
- `outlineJson` LONGTEXT NULL,
- `foreword` TEXT NULL,
- `afterword` TEXT NULL,
- `errorMsg` TEXT NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- `updatedAt` DATETIME(3) NOT NULL,
- INDEX `Book_userId_status_idx`(`userId`, `status`),
- INDEX `Book_createdAt_idx`(`createdAt`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `BookChapter` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `bookId` INTEGER NOT NULL,
- `parentId` INTEGER NULL,
- `level` INTEGER NOT NULL DEFAULT 1,
- `number` INTEGER NOT NULL,
- `title` VARCHAR(191) NOT NULL,
- `summary` TEXT NULL,
- `keyPoints` TEXT NULL,
- `estimatedWords` INTEGER NOT NULL DEFAULT 1000,
- `content` LONGTEXT NULL,
- `wordCount` INTEGER NOT NULL DEFAULT 0,
- `status` VARCHAR(191) NOT NULL DEFAULT 'pending',
- `contentStatus` VARCHAR(20) NULL,
- `contentError` TEXT NULL,
- `generatedAt` DATETIME(3) NULL,
- `audioUrl` TEXT NULL,
- `audioDuration` INTEGER NOT NULL DEFAULT 0,
- `videoUrl` TEXT NULL,
- `videoDuration` INTEGER NULL,
- `isPublic` BOOLEAN NOT NULL DEFAULT false,
- INDEX `BookChapter_bookId_idx`(`bookId`),
- INDEX `BookChapter_bookId_parentId_idx`(`bookId`, `parentId`),
- INDEX `BookChapter_bookId_level_idx`(`bookId`, `level`),
- UNIQUE INDEX `BookChapter_bookId_parentId_level_number_key`(`bookId`, `parentId`, `level`, `number`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `VideoProject` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NULL,
- `title` VARCHAR(191) NOT NULL,
- `description` VARCHAR(191) NULL,
- `coverUrl` VARCHAR(191) NULL,
- `configJson` LONGTEXT NULL,
- `outputUrl` VARCHAR(191) NULL,
- `duration` INTEGER NULL,
- `fileSize` INTEGER NULL,
- `bookId` INTEGER NULL,
- `chapterId` INTEGER NULL,
- `status` VARCHAR(191) NOT NULL DEFAULT 'draft',
- `progress` INTEGER NOT NULL DEFAULT 0,
- `errorMsg` TEXT NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- `updatedAt` DATETIME(3) NOT NULL,
- INDEX `VideoProject_userId_status_idx`(`userId`, `status`),
- INDEX `VideoProject_createdAt_idx`(`createdAt`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `SearchHistory` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NOT NULL,
- `keyword` VARCHAR(191) NOT NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- INDEX `SearchHistory_userId_createdAt_idx`(`userId`, `createdAt`),
- INDEX `SearchHistory_userId_idx`(`userId`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `HotSearch` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `keyword` VARCHAR(191) NOT NULL,
- `count` INTEGER NOT NULL DEFAULT 0,
- `sort` INTEGER NOT NULL DEFAULT 0,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- `updatedAt` DATETIME(3) NOT NULL,
- INDEX `HotSearch_sort_idx`(`sort`),
- INDEX `HotSearch_count_idx`(`count`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `SignRecord` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NOT NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- INDEX `SignRecord_userId_createdAt_idx`(`userId`, `createdAt`),
- UNIQUE INDEX `SignRecord_userId_createdAt_key`(`userId`, `createdAt`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `SubscriptionPlan` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `name` VARCHAR(191) NOT NULL,
- `level` INTEGER NOT NULL DEFAULT 0,
- `priceMonthly` DECIMAL(10, 2) NOT NULL DEFAULT 0,
- `priceYearly` DECIMAL(10, 2) NOT NULL DEFAULT 0,
- `description` TEXT NULL,
- `features` TEXT NULL,
- `isRecommended` BOOLEAN NOT NULL DEFAULT false,
- `isActive` BOOLEAN NOT NULL DEFAULT true,
- `sortOrder` INTEGER NOT NULL DEFAULT 0,
- `dailyGenerations` INTEGER NOT NULL DEFAULT 3,
- `perGenerationLimit` INTEGER NOT NULL DEFAULT 2000,
- `monthlyTokens` INTEGER NOT NULL DEFAULT 10000,
- `monthlyMinutes` INTEGER NOT NULL DEFAULT 30,
- `yearlyTokens` INTEGER NULL,
- `voiceOptions` INTEGER NOT NULL DEFAULT 5,
- `audioQuality` VARCHAR(191) NOT NULL DEFAULT 'standard',
- `apiAccess` BOOLEAN NOT NULL DEFAULT false,
- `batchProcessing` BOOLEAN NOT NULL DEFAULT false,
- `teamManagement` BOOLEAN NOT NULL DEFAULT false,
- `overageEnabled` BOOLEAN NOT NULL DEFAULT false,
- `overagePrice` DECIMAL(10, 2) NOT NULL DEFAULT 0,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- `updatedAt` DATETIME(3) NOT NULL,
- INDEX `SubscriptionPlan_level_idx`(`level`),
- INDEX `SubscriptionPlan_isActive_sortOrder_idx`(`isActive`, `sortOrder`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `Subscription` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NOT NULL,
- `planId` INTEGER NOT NULL,
- `startDate` DATETIME(3) NOT NULL,
- `endDate` DATETIME(3) NOT NULL,
- `status` VARCHAR(191) NOT NULL DEFAULT 'active',
- `autoRenew` BOOLEAN NOT NULL DEFAULT false,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- `updatedAt` DATETIME(3) NOT NULL,
- INDEX `Subscription_userId_status_idx`(`userId`, `status`),
- INDEX `Subscription_userId_endDate_idx`(`userId`, `endDate`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `TokenUsage` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NOT NULL,
- `type` VARCHAR(191) NOT NULL,
- `amount` INTEGER NOT NULL DEFAULT 0,
- `contentLength` INTEGER NOT NULL DEFAULT 0,
- `orderId` INTEGER NULL,
- `description` TEXT NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- INDEX `TokenUsage_userId_createdAt_idx`(`userId`, `createdAt`),
- INDEX `TokenUsage_userId_type_idx`(`userId`, `type`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `TokenBalance` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NOT NULL,
- `totalTokens` INTEGER NOT NULL DEFAULT 0,
- `usedTokens` INTEGER NOT NULL DEFAULT 0,
- `resetDate` DATETIME(3) NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- `updatedAt` DATETIME(3) NOT NULL,
- UNIQUE INDEX `TokenBalance_userId_key`(`userId`),
- INDEX `TokenBalance_userId_idx`(`userId`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `VideoMaterial` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NULL,
- `type` VARCHAR(191) NOT NULL,
- `name` VARCHAR(191) NOT NULL,
- `url` TEXT NOT NULL,
- `thumbnail` VARCHAR(191) NULL,
- `tags` TEXT NULL,
- `category` VARCHAR(191) NULL,
- `duration` INTEGER NULL,
- `size` INTEGER NULL,
- `width` INTEGER NULL,
- `height` INTEGER NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- `updatedAt` DATETIME(3) NOT NULL,
- INDEX `VideoMaterial_userId_type_idx`(`userId`, `type`),
- INDEX `VideoMaterial_type_category_idx`(`type`, `category`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `AudioRecord` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NULL,
- `audioId` VARCHAR(191) NOT NULL,
- `title` VARCHAR(191) NOT NULL DEFAULT '未命名音频',
- `text` LONGTEXT NULL,
- `wordCount` INTEGER NOT NULL DEFAULT 0,
- `voiceId` VARCHAR(191) NOT NULL DEFAULT 'cherry',
- `voiceParams` VARCHAR(191) NULL,
- `audioUrl` TEXT NULL,
- `audioDuration` INTEGER NOT NULL DEFAULT 0,
- `audioSize` INTEGER NOT NULL DEFAULT 0,
- `status` VARCHAR(191) NOT NULL DEFAULT 'processing',
- `errorMsg` TEXT NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- `updatedAt` DATETIME(3) NOT NULL,
- UNIQUE INDEX `AudioRecord_audioId_key`(`audioId`),
- INDEX `AudioRecord_userId_idx`(`userId`),
- INDEX `AudioRecord_audioId_idx`(`audioId`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `PlatformAccount` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NOT NULL,
- `platform` VARCHAR(191) NOT NULL,
- `nickname` VARCHAR(191) NOT NULL DEFAULT '',
- `avatar` VARCHAR(191) NOT NULL DEFAULT '',
- `cookies` TEXT NOT NULL,
- `headers` TEXT NULL,
- `isValid` BOOLEAN NOT NULL DEFAULT true,
- `expireTime` DATETIME(3) NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- `updatedAt` DATETIME(3) NOT NULL,
- INDEX `PlatformAccount_userId_idx`(`userId`),
- INDEX `PlatformAccount_platform_idx`(`platform`),
- UNIQUE INDEX `PlatformAccount_userId_platform_key`(`userId`, `platform`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `PublishTask` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NOT NULL,
- `videoProjectId` INTEGER NOT NULL,
- `platform` VARCHAR(191) NOT NULL,
- `title` TEXT NOT NULL,
- `description` TEXT NULL,
- `tags` TEXT NULL,
- `coverUrl` TEXT NULL,
- `videoUrl` TEXT NULL,
- `status` VARCHAR(191) NOT NULL DEFAULT 'pending',
- `errorMsg` TEXT NULL,
- `publishedUrl` TEXT NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- `updatedAt` DATETIME(3) NOT NULL,
- INDEX `PublishTask_userId_platform_idx`(`userId`, `platform`),
- INDEX `PublishTask_status_idx`(`status`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `Draft` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NOT NULL,
- `type` VARCHAR(191) NOT NULL,
- `title` TEXT NULL,
- `content` LONGTEXT NULL,
- `metadata` TEXT NULL,
- `autoSavedAt` DATETIME(3) NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- `updatedAt` DATETIME(3) NOT NULL,
- INDEX `Draft_userId_type_idx`(`userId`, `type`),
- INDEX `Draft_userId_updatedAt_idx`(`userId`, `updatedAt`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `Playlist` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `userId` INTEGER NOT NULL,
- `name` VARCHAR(191) NOT NULL,
- `description` TEXT NULL,
- `createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
- `updatedAt` DATETIME(3) NOT NULL,
- INDEX `Playlist_userId_idx`(`userId`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- CreateTable
- CREATE TABLE `PlaylistItem` (
- `id` INTEGER NOT NULL AUTO_INCREMENT,
- `playlistId` INTEGER NOT NULL,
- `chapterId` INTEGER NULL,
- `audioId` VARCHAR(191) NULL,
- `order` INTEGER NOT NULL DEFAULT 0,
- INDEX `PlaylistItem_playlistId_order_idx`(`playlistId`, `order`),
- PRIMARY KEY (`id`)
- ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- -- AddForeignKey
- ALTER TABLE `Order` ADD CONSTRAINT `Order_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `Order` ADD CONSTRAINT `Order_planId_fkey` FOREIGN KEY (`planId`) REFERENCES `SubscriptionPlan`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `PlayRecord` ADD CONSTRAINT `PlayRecord_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `PlayRecord` ADD CONSTRAINT `PlayRecord_chapterId_fkey` FOREIGN KEY (`chapterId`) REFERENCES `BookChapter`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `UserPreference` ADD CONSTRAINT `UserPreference_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `Favorite` ADD CONSTRAINT `Favorite_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `Favorite` ADD CONSTRAINT `Favorite_bookId_fkey` FOREIGN KEY (`bookId`) REFERENCES `Book`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `Comment` ADD CONSTRAINT `Comment_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `Comment` ADD CONSTRAINT `Comment_chapterId_fkey` FOREIGN KEY (`chapterId`) REFERENCES `BookChapter`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `BookChapter` ADD CONSTRAINT `BookChapter_bookId_fkey` FOREIGN KEY (`bookId`) REFERENCES `Book`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `VideoProject` ADD CONSTRAINT `VideoProject_bookId_fkey` FOREIGN KEY (`bookId`) REFERENCES `Book`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `VideoProject` ADD CONSTRAINT `VideoProject_chapterId_fkey` FOREIGN KEY (`chapterId`) REFERENCES `BookChapter`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `SignRecord` ADD CONSTRAINT `SignRecord_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `Subscription` ADD CONSTRAINT `Subscription_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `Subscription` ADD CONSTRAINT `Subscription_planId_fkey` FOREIGN KEY (`planId`) REFERENCES `SubscriptionPlan`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `TokenUsage` ADD CONSTRAINT `TokenUsage_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `TokenUsage` ADD CONSTRAINT `TokenUsage_orderId_fkey` FOREIGN KEY (`orderId`) REFERENCES `Order`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `TokenBalance` ADD CONSTRAINT `TokenBalance_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `Draft` ADD CONSTRAINT `Draft_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `Playlist` ADD CONSTRAINT `Playlist_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `PlaylistItem` ADD CONSTRAINT `PlaylistItem_playlistId_fkey` FOREIGN KEY (`playlistId`) REFERENCES `Playlist`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
- -- AddForeignKey
- ALTER TABLE `PlaylistItem` ADD CONSTRAINT `PlaylistItem_chapterId_fkey` FOREIGN KEY (`chapterId`) REFERENCES `BookChapter`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|