mirror of
https://github.com/f/awesome-chatgpt-prompts.git
synced 2026-03-03 02:57:01 +00:00
229 lines
6.9 KiB
SQL
229 lines
6.9 KiB
SQL
-- CreateEnum
|
|
CREATE TYPE "UserRole" AS ENUM ('ADMIN', 'USER');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "PromptType" AS ENUM ('TEXT', 'IMAGE', 'VIDEO', 'AUDIO');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "ChangeRequestStatus" AS ENUM ('PENDING', 'APPROVED', 'REJECTED');
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "users" (
|
|
"id" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"username" TEXT NOT NULL,
|
|
"name" TEXT,
|
|
"password" TEXT,
|
|
"avatar" TEXT,
|
|
"role" "UserRole" NOT NULL DEFAULT 'USER',
|
|
"locale" TEXT NOT NULL DEFAULT 'en',
|
|
"emailVerified" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "accounts" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"type" TEXT NOT NULL,
|
|
"provider" TEXT NOT NULL,
|
|
"providerAccountId" TEXT NOT NULL,
|
|
"refresh_token" TEXT,
|
|
"access_token" TEXT,
|
|
"expires_at" INTEGER,
|
|
"token_type" TEXT,
|
|
"scope" TEXT,
|
|
"id_token" TEXT,
|
|
"session_state" TEXT,
|
|
|
|
CONSTRAINT "accounts_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "sessions" (
|
|
"id" TEXT NOT NULL,
|
|
"sessionToken" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"expires" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "sessions_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "verification_tokens" (
|
|
"identifier" TEXT NOT NULL,
|
|
"token" TEXT NOT NULL,
|
|
"expires" TIMESTAMP(3) NOT NULL
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "prompts" (
|
|
"id" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"content" TEXT NOT NULL,
|
|
"type" "PromptType" NOT NULL DEFAULT 'TEXT',
|
|
"isPrivate" BOOLEAN NOT NULL DEFAULT false,
|
|
"mediaUrl" TEXT,
|
|
"viewCount" INTEGER NOT NULL DEFAULT 0,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
"authorId" TEXT NOT NULL,
|
|
"categoryId" TEXT,
|
|
|
|
CONSTRAINT "prompts_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "prompt_versions" (
|
|
"id" TEXT NOT NULL,
|
|
"version" INTEGER NOT NULL,
|
|
"content" TEXT NOT NULL,
|
|
"changeNote" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"promptId" TEXT NOT NULL,
|
|
"createdBy" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "prompt_versions_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "change_requests" (
|
|
"id" TEXT NOT NULL,
|
|
"proposedContent" TEXT NOT NULL,
|
|
"proposedTitle" TEXT,
|
|
"reason" TEXT,
|
|
"status" "ChangeRequestStatus" NOT NULL DEFAULT 'PENDING',
|
|
"reviewNote" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
"promptId" TEXT NOT NULL,
|
|
"authorId" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "change_requests_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "categories" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"slug" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"icon" TEXT,
|
|
"order" INTEGER NOT NULL DEFAULT 0,
|
|
"parentId" TEXT,
|
|
|
|
CONSTRAINT "categories_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "tags" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"slug" TEXT NOT NULL,
|
|
"color" TEXT NOT NULL DEFAULT '#6366f1',
|
|
|
|
CONSTRAINT "tags_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "prompt_tags" (
|
|
"promptId" TEXT NOT NULL,
|
|
"tagId" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "prompt_tags_pkey" PRIMARY KEY ("promptId","tagId")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "users_email_key" ON "users"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "users_username_key" ON "users"("username");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "accounts_provider_providerAccountId_key" ON "accounts"("provider", "providerAccountId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "sessions_sessionToken_key" ON "sessions"("sessionToken");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "verification_tokens_token_key" ON "verification_tokens"("token");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "verification_tokens_identifier_token_key" ON "verification_tokens"("identifier", "token");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "prompts_authorId_idx" ON "prompts"("authorId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "prompts_categoryId_idx" ON "prompts"("categoryId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "prompts_type_idx" ON "prompts"("type");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "prompts_isPrivate_idx" ON "prompts"("isPrivate");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "prompt_versions_promptId_idx" ON "prompt_versions"("promptId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "prompt_versions_promptId_version_key" ON "prompt_versions"("promptId", "version");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "change_requests_promptId_idx" ON "change_requests"("promptId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "change_requests_authorId_idx" ON "change_requests"("authorId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "change_requests_status_idx" ON "change_requests"("status");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "categories_slug_key" ON "categories"("slug");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "categories_parentId_idx" ON "categories"("parentId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "tags_name_key" ON "tags"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "tags_slug_key" ON "tags"("slug");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "accounts" ADD CONSTRAINT "accounts_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "sessions" ADD CONSTRAINT "sessions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "prompts" ADD CONSTRAINT "prompts_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "prompts" ADD CONSTRAINT "prompts_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "categories"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "prompt_versions" ADD CONSTRAINT "prompt_versions_promptId_fkey" FOREIGN KEY ("promptId") REFERENCES "prompts"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "prompt_versions" ADD CONSTRAINT "prompt_versions_createdBy_fkey" FOREIGN KEY ("createdBy") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "change_requests" ADD CONSTRAINT "change_requests_promptId_fkey" FOREIGN KEY ("promptId") REFERENCES "prompts"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "change_requests" ADD CONSTRAINT "change_requests_authorId_fkey" FOREIGN KEY ("authorId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "categories" ADD CONSTRAINT "categories_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "categories"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "prompt_tags" ADD CONSTRAINT "prompt_tags_promptId_fkey" FOREIGN KEY ("promptId") REFERENCES "prompts"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "prompt_tags" ADD CONSTRAINT "prompt_tags_tagId_fkey" FOREIGN KEY ("tagId") REFERENCES "tags"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|