159 lines
4.9 KiB
SQL
159 lines
4.9 KiB
SQL
-- CreateEnum
|
|
CREATE TYPE "TeamMemberRole" AS ENUM ('OWNER', 'VIEWER', 'EDITOR');
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Team" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "Team_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TeamMember" (
|
|
"id" TEXT NOT NULL,
|
|
"role" "TeamMemberRole" NOT NULL,
|
|
"userUid" TEXT NOT NULL,
|
|
"teamID" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "TeamMember_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TeamInvitation" (
|
|
"id" TEXT NOT NULL,
|
|
"teamID" TEXT NOT NULL,
|
|
"creatorUid" TEXT NOT NULL,
|
|
"inviteeEmail" TEXT NOT NULL,
|
|
"inviteeRole" "TeamMemberRole" NOT NULL,
|
|
|
|
CONSTRAINT "TeamInvitation_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TeamCollection" (
|
|
"id" TEXT NOT NULL,
|
|
"parentID" TEXT,
|
|
"teamID" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "TeamCollection_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TeamRequest" (
|
|
"id" TEXT NOT NULL,
|
|
"collectionID" TEXT NOT NULL,
|
|
"teamID" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"request" JSONB NOT NULL,
|
|
|
|
CONSTRAINT "TeamRequest_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Shortcode" (
|
|
"id" TEXT NOT NULL,
|
|
"request" JSONB NOT NULL,
|
|
"creatorUid" TEXT,
|
|
"createdOn" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "Shortcode_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "TeamEnvironment" (
|
|
"id" TEXT NOT NULL,
|
|
"teamID" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"variables" JSONB NOT NULL,
|
|
|
|
CONSTRAINT "TeamEnvironment_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT,
|
|
"email" TEXT,
|
|
"image" TEXT,
|
|
"isAdmin" BOOLEAN NOT NULL DEFAULT false,
|
|
"refreshToken" TEXT,
|
|
"createdOn" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Account" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"provider" TEXT NOT NULL,
|
|
"providerAccountId" TEXT NOT NULL,
|
|
"providerRefreshToken" TEXT,
|
|
"providerAccessToken" TEXT,
|
|
"providerScope" TEXT,
|
|
"loggedIn" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "Account_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "PasswordlessVerification" (
|
|
"deviceIdentifier" TEXT NOT NULL,
|
|
"token" TEXT NOT NULL,
|
|
"userUid" TEXT NOT NULL,
|
|
"expiresOn" TIMESTAMPTZ(3) NOT NULL
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "TeamMember_teamID_userUid_key" ON "TeamMember"("teamID", "userUid");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "TeamInvitation_teamID_idx" ON "TeamInvitation"("teamID");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "TeamInvitation_teamID_inviteeEmail_key" ON "TeamInvitation"("teamID", "inviteeEmail");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Shortcode_id_creatorUid_key" ON "Shortcode"("id", "creatorUid");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Account_provider_providerAccountId_key" ON "Account"("provider", "providerAccountId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "PasswordlessVerification_token_key" ON "PasswordlessVerification"("token");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "PasswordlessVerification_deviceIdentifier_token_key" ON "PasswordlessVerification"("deviceIdentifier", "token");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TeamMember" ADD CONSTRAINT "TeamMember_teamID_fkey" FOREIGN KEY ("teamID") REFERENCES "Team"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TeamInvitation" ADD CONSTRAINT "TeamInvitation_teamID_fkey" FOREIGN KEY ("teamID") REFERENCES "Team"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TeamCollection" ADD CONSTRAINT "TeamCollection_parentID_fkey" FOREIGN KEY ("parentID") REFERENCES "TeamCollection"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TeamCollection" ADD CONSTRAINT "TeamCollection_teamID_fkey" FOREIGN KEY ("teamID") REFERENCES "Team"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TeamRequest" ADD CONSTRAINT "TeamRequest_collectionID_fkey" FOREIGN KEY ("collectionID") REFERENCES "TeamCollection"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TeamRequest" ADD CONSTRAINT "TeamRequest_teamID_fkey" FOREIGN KEY ("teamID") REFERENCES "Team"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "TeamEnvironment" ADD CONSTRAINT "TeamEnvironment_teamID_fkey" FOREIGN KEY ("teamID") REFERENCES "Team"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Account" ADD CONSTRAINT "Account_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "PasswordlessVerification" ADD CONSTRAINT "PasswordlessVerification_userUid_fkey" FOREIGN KEY ("userUid") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|