diff --git a/prisma/migrations/20220520045927_init/migration.sql b/prisma/migrations/20220520045927_init/migration.sql new file mode 100644 index 00000000..d34ae471 --- /dev/null +++ b/prisma/migrations/20220520045927_init/migration.sql @@ -0,0 +1,143 @@ +-- CreateEnum +CREATE TYPE "MembershipRole" AS ENUM ('OWNER', 'ADMIN', 'SUBSCRIBER'); + +-- CreateEnum +CREATE TYPE "PageType" AS ENUM ('POST', 'PAGE'); + +-- CreateTable +CREATE TABLE "users" ( + "id" TEXT NOT NULL, + "name" TEXT NOT NULL, + "username" TEXT NOT NULL, + "email" TEXT NOT NULL, + "emailVerified" TIMESTAMP(3), + "avatar" TEXT, + "bio" TEXT, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "users_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "login_tokens" ( + "id" TEXT NOT NULL, + "email" TEXT NOT NULL, + "expiresAt" TIMESTAMP(3) NOT NULL, + "subscribeForm" JSONB, + + CONSTRAINT "login_tokens_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "access_tokens" ( + "id" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "name" TEXT NOT NULL, + "token" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "publicId" TEXT, + "publicIdExpiresAt" TIMESTAMP(3), + + CONSTRAINT "access_tokens_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "memberships" ( + "id" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "userId" TEXT NOT NULL, + "siteId" TEXT NOT NULL, + "role" "MembershipRole" NOT NULL, + "acceptedAt" TIMESTAMP(3), + "lastSwitchedTo" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "config" JSONB NOT NULL DEFAULT '{}', + + CONSTRAINT "memberships_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "sites" ( + "id" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "name" TEXT NOT NULL, + "icon" TEXT, + "subdomain" TEXT NOT NULL, + "description" TEXT, + "twitter" TEXT, + "navigation" JSONB, + "deletedAt" TIMESTAMP(3), + + CONSTRAINT "sites_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "pages" ( + "id" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + "contentUpdatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "publishedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "published" BOOLEAN NOT NULL DEFAULT false, + "type" "PageType" NOT NULL DEFAULT E'POST', + "title" TEXT NOT NULL, + "content" TEXT NOT NULL, + "excerpt" TEXT, + "format" TEXT NOT NULL DEFAULT E'markdown', + "slug" TEXT NOT NULL, + "siteId" TEXT NOT NULL, + "deletedAt" TIMESTAMP(3), + "subscribersNotifiedAt" TIMESTAMP(3), + + CONSTRAINT "pages_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "_PageToUser" ( + "A" TEXT NOT NULL, + "B" TEXT NOT NULL +); + +-- CreateIndex +CREATE UNIQUE INDEX "users_username_key" ON "users"("username"); + +-- CreateIndex +CREATE UNIQUE INDEX "users_email_key" ON "users"("email"); + +-- CreateIndex +CREATE UNIQUE INDEX "access_tokens_token_key" ON "access_tokens"("token"); + +-- CreateIndex +CREATE UNIQUE INDEX "access_tokens_publicId_key" ON "access_tokens"("publicId"); + +-- CreateIndex +CREATE UNIQUE INDEX "sites_subdomain_key" ON "sites"("subdomain"); + +-- CreateIndex +CREATE UNIQUE INDEX "pages_siteId_slug_key" ON "pages"("siteId", "slug"); + +-- CreateIndex +CREATE UNIQUE INDEX "_PageToUser_AB_unique" ON "_PageToUser"("A", "B"); + +-- CreateIndex +CREATE INDEX "_PageToUser_B_index" ON "_PageToUser"("B"); + +-- AddForeignKey +ALTER TABLE "access_tokens" ADD CONSTRAINT "access_tokens_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "memberships" ADD CONSTRAINT "memberships_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "memberships" ADD CONSTRAINT "memberships_siteId_fkey" FOREIGN KEY ("siteId") REFERENCES "sites"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "pages" ADD CONSTRAINT "pages_siteId_fkey" FOREIGN KEY ("siteId") REFERENCES "sites"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_PageToUser" ADD CONSTRAINT "_PageToUser_A_fkey" FOREIGN KEY ("A") REFERENCES "pages"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_PageToUser" ADD CONSTRAINT "_PageToUser_B_fkey" FOREIGN KEY ("B") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 00000000..fbffa92c --- /dev/null +++ b/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (i.e. Git) +provider = "postgresql" \ No newline at end of file