292 lines
10 KiB
SQL
292 lines
10 KiB
SQL
/*
|
|
Warnings:
|
|
|
|
- You are about to drop the column `logoUrl` on the `system_settings` table. All the data in the column will be lost.
|
|
- A unique constraint covering the columns `[dingtalkUserId]` on the table `users` will be added. If there are existing duplicate values, this will fail.
|
|
- A unique constraint covering the columns `[phone]` on the table `users` will be added. If there are existing duplicate values, this will fail.
|
|
|
|
*/
|
|
-- AlterTable
|
|
ALTER TABLE "FieldDefinition" ALTER COLUMN "updatedAt" DROP DEFAULT;
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "FieldOption" ALTER COLUMN "updatedAt" DROP DEFAULT;
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "UploadField" ALTER COLUMN "updatedAt" DROP DEFAULT;
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "UploadTemplate" ALTER COLUMN "updatedAt" DROP DEFAULT;
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "categories" ADD COLUMN "options" TEXT;
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "materials" ADD COLUMN "deletedAt" TIMESTAMP(3),
|
|
ADD COLUMN "isPremium" BOOLEAN NOT NULL DEFAULT false,
|
|
ALTER COLUMN "zipFileName" SET DEFAULT '',
|
|
ALTER COLUMN "zipFilePath" SET DEFAULT '',
|
|
ALTER COLUMN "lastTransferredAt" SET DATA TYPE TIMESTAMP(3);
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "scenes" ADD COLUMN "options" TEXT;
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "system_settings" DROP COLUMN "logoUrl",
|
|
ADD COLUMN "enableAiImageEdit" BOOLEAN NOT NULL DEFAULT false,
|
|
ADD COLUMN "enableRegistration" BOOLEAN NOT NULL DEFAULT true,
|
|
ADD COLUMN "enableTunnelService" BOOLEAN NOT NULL DEFAULT false,
|
|
ADD COLUMN "enableUserActivation" BOOLEAN NOT NULL DEFAULT false,
|
|
ADD COLUMN "headerLogoUrl" TEXT NOT NULL DEFAULT 'http://s3.1080p.hk/shuzhou/2025/05/18/8ebadf0a7cc34eaea00e8619b8efb827.png',
|
|
ADD COLUMN "loginLogoUrl" TEXT NOT NULL DEFAULT 'http://s3.1080p.hk/shuzhou/2025/05/18/8ebadf0a7cc34eaea00e8619b8efb827.png',
|
|
ADD COLUMN "premiumRatio" DOUBLE PRECISION NOT NULL DEFAULT 10.0,
|
|
ADD COLUMN "s3AccessKey" TEXT NOT NULL DEFAULT '',
|
|
ADD COLUMN "s3Bucket" TEXT NOT NULL DEFAULT '',
|
|
ADD COLUMN "s3Endpoint" TEXT NOT NULL DEFAULT '',
|
|
ADD COLUMN "s3PublicUrl" TEXT NOT NULL DEFAULT '',
|
|
ADD COLUMN "s3Region" TEXT NOT NULL DEFAULT 'us-east-1',
|
|
ADD COLUMN "s3SecretKey" TEXT NOT NULL DEFAULT '';
|
|
|
|
-- AlterTable
|
|
ALTER TABLE "users" ADD COLUMN "avatar" TEXT,
|
|
ADD COLUMN "department" TEXT NOT NULL DEFAULT '',
|
|
ADD COLUMN "dingtalkUserId" TEXT,
|
|
ADD COLUMN "isSuperAdmin" BOOLEAN NOT NULL DEFAULT false,
|
|
ADD COLUMN "loginType" TEXT NOT NULL DEFAULT 'normal',
|
|
ADD COLUMN "managedDepartment" TEXT,
|
|
ADD COLUMN "parentId" TEXT,
|
|
ADD COLUMN "phone" TEXT,
|
|
ADD COLUMN "realName" TEXT;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "FilterItem" (
|
|
"id" TEXT NOT NULL,
|
|
"fieldKey" TEXT NOT NULL,
|
|
"label" TEXT NOT NULL,
|
|
"group" TEXT,
|
|
"orderIndex" INTEGER NOT NULL DEFAULT 0,
|
|
"multiSelect" BOOLEAN NOT NULL DEFAULT false,
|
|
"showOnHome" BOOLEAN NOT NULL DEFAULT true,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "FilterItem_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "material_favorites" (
|
|
"id" TEXT NOT NULL,
|
|
"materialId" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "material_favorites_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "material_download_logs" (
|
|
"id" TEXT NOT NULL,
|
|
"materialId" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"downloadedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "material_download_logs_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "material_logs" (
|
|
"id" TEXT NOT NULL,
|
|
"materialId" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"action" TEXT NOT NULL,
|
|
"changes" JSONB,
|
|
"timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "material_logs_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "platforms" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"options" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "platforms_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "departments" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "departments_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "danmakus" (
|
|
"id" TEXT NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
"username" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "danmakus_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "invitations" (
|
|
"id" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"createdBy" TEXT NOT NULL,
|
|
"usedBy" TEXT,
|
|
"usedAt" TIMESTAMP(3),
|
|
"expiresAt" TIMESTAMP(3),
|
|
"maxUses" INTEGER NOT NULL DEFAULT 1,
|
|
"currentUses" INTEGER NOT NULL DEFAULT 0,
|
|
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "invitations_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "material_favorites_materialId_idx" ON "material_favorites"("materialId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "material_favorites_userId_idx" ON "material_favorites"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "material_favorites_materialId_userId_key" ON "material_favorites"("materialId", "userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "material_download_logs_materialId_idx" ON "material_download_logs"("materialId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "material_download_logs_userId_idx" ON "material_download_logs"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "material_download_logs_downloadedAt_idx" ON "material_download_logs"("downloadedAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "material_download_logs_materialId_userId_downloadedAt_idx" ON "material_download_logs"("materialId", "userId", "downloadedAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "material_logs_materialId_idx" ON "material_logs"("materialId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "material_logs_userId_idx" ON "material_logs"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "material_logs_timestamp_idx" ON "material_logs"("timestamp");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "platforms_name_key" ON "platforms"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "departments_name_key" ON "departments"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "danmakus_createdAt_idx" ON "danmakus"("createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "invitations_code_key" ON "invitations"("code");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "invitations_code_idx" ON "invitations"("code");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "invitations_createdBy_idx" ON "invitations"("createdBy");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "FieldDefinition_source_idx" ON "FieldDefinition"("source");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "FieldDefinition_isStandard_idx" ON "FieldDefinition"("isStandard");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "FieldDefinition_isFilterEnabled_idx" ON "FieldDefinition"("isFilterEnabled");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "FieldDefinition_filterOrder_idx" ON "FieldDefinition"("filterOrder");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "FieldDefinition_isFilterEnabled_filterOrder_idx" ON "FieldDefinition"("isFilterEnabled", "filterOrder");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "FieldOption_fieldId_idx" ON "FieldOption"("fieldId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "FieldOption_fieldId_orderIndex_idx" ON "FieldOption"("fieldId", "orderIndex");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UploadField_templateId_idx" ON "UploadField"("templateId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UploadField_key_idx" ON "UploadField"("key");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UploadField_type_idx" ON "UploadField"("type");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UploadField_visibleOnHomeFilter_idx" ON "UploadField"("visibleOnHomeFilter");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UploadField_isSearchable_idx" ON "UploadField"("isSearchable");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UploadField_addToCategory_idx" ON "UploadField"("addToCategory");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UploadField_orderIndex_idx" ON "UploadField"("orderIndex");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UploadField_templateId_orderIndex_idx" ON "UploadField"("templateId", "orderIndex");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UploadTemplate_status_idx" ON "UploadTemplate"("status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UploadTemplate_materialType_idx" ON "UploadTemplate"("materialType");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UploadTemplate_materialKind_idx" ON "UploadTemplate"("materialKind");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UploadTemplate_createdAt_idx" ON "UploadTemplate"("createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "UploadTemplate_updatedAt_idx" ON "UploadTemplate"("updatedAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "materials_deletedAt_idx" ON "materials"("deletedAt");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "users_dingtalkUserId_key" ON "users"("dingtalkUserId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "users_phone_key" ON "users"("phone");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "users" ADD CONSTRAINT "users_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "material_favorites" ADD CONSTRAINT "material_favorites_materialId_fkey" FOREIGN KEY ("materialId") REFERENCES "materials"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "material_favorites" ADD CONSTRAINT "material_favorites_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "material_download_logs" ADD CONSTRAINT "material_download_logs_materialId_fkey" FOREIGN KEY ("materialId") REFERENCES "materials"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "material_download_logs" ADD CONSTRAINT "material_download_logs_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "material_logs" ADD CONSTRAINT "material_logs_materialId_fkey" FOREIGN KEY ("materialId") REFERENCES "materials"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "material_logs" ADD CONSTRAINT "material_logs_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|