209 lines
7.3 KiB
SQL
209 lines
7.3 KiB
SQL
-- CreateEnum
|
|
CREATE TYPE "public"."UserRole" AS ENUM ('USER', 'CREATOR', 'ADMIN');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "public"."TextType" AS ENUM ('TEXT', 'WORD', 'NUMBER', 'INTEGER');
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "public"."User" (
|
|
"id" SERIAL NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"role" "public"."UserRole" NOT NULL,
|
|
"emailConfirmedAt" TIMESTAMPTZ(3),
|
|
"deactivated" BOOLEAN NOT NULL DEFAULT false,
|
|
"createdAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMPTZ(3) NOT NULL,
|
|
"deletedAt" TIMESTAMPTZ(3),
|
|
|
|
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "public"."UserLoginLinks" (
|
|
"id" SERIAL NOT NULL,
|
|
"secret" TEXT NOT NULL,
|
|
"used" BOOLEAN NOT NULL DEFAULT false,
|
|
"userId" INTEGER NOT NULL,
|
|
"createdAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "UserLoginLinks_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "public"."Hunt" (
|
|
"id" SERIAL NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"description" TEXT NOT NULL,
|
|
"virtual" BOOLEAN NOT NULL DEFAULT false,
|
|
"start" TIMESTAMPTZ(3),
|
|
"end" TIMESTAMPTZ(3),
|
|
"allowJoin" BOOLEAN NOT NULL DEFAULT false,
|
|
"revealPictures" BOOLEAN NOT NULL DEFAULT false,
|
|
"revealAnswers" BOOLEAN NOT NULL DEFAULT false,
|
|
"creatorId" INTEGER NOT NULL,
|
|
"createdAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMPTZ(3) NOT NULL,
|
|
"deletedAt" TIMESTAMPTZ(3),
|
|
|
|
CONSTRAINT "Hunt_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "public"."HuntMember" (
|
|
"huntId" INTEGER NOT NULL,
|
|
"memberId" INTEGER NOT NULL,
|
|
"createdAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "public"."HuntTeam" (
|
|
"id" SERIAL NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"description" TEXT NOT NULL DEFAULT '',
|
|
"password" TEXT NOT NULL DEFAULT '',
|
|
"huntId" INTEGER NOT NULL,
|
|
"ownerId" INTEGER NOT NULL,
|
|
"createdAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "HuntTeam_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "public"."TeamMember" (
|
|
"teamId" INTEGER NOT NULL,
|
|
"memberId" INTEGER NOT NULL,
|
|
"createdAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "public"."HuntQuest" (
|
|
"id" SERIAL NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"description" TEXT NOT NULL DEFAULT '',
|
|
"question" TEXT,
|
|
"image" TEXT,
|
|
"location" TEXT,
|
|
"locationLink" TEXT,
|
|
"order" INTEGER NOT NULL DEFAULT 0,
|
|
"optional" BOOLEAN NOT NULL DEFAULT true,
|
|
"pictureRequired" BOOLEAN NOT NULL DEFAULT false,
|
|
"textRequired" BOOLEAN NOT NULL DEFAULT false,
|
|
"textType" "public"."TextType" NOT NULL DEFAULT 'TEXT',
|
|
"textUnit" TEXT,
|
|
"textSolution" TEXT,
|
|
"points" SMALLINT NOT NULL DEFAULT 10,
|
|
"extraPoints" SMALLINT,
|
|
"extraText" TEXT,
|
|
"huntId" INTEGER NOT NULL,
|
|
|
|
CONSTRAINT "HuntQuest_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "public"."QuestAnswer" (
|
|
"id" SERIAL NOT NULL,
|
|
"text" TEXT,
|
|
"picture" TEXT,
|
|
"location" TEXT,
|
|
"lat" DECIMAL(10,8),
|
|
"lon" DECIMAL(10,8),
|
|
"teamId" INTEGER NOT NULL,
|
|
"memberId" INTEGER NOT NULL,
|
|
"questId" INTEGER NOT NULL,
|
|
"createdAt" TIMESTAMPTZ(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMPTZ(3) NOT NULL,
|
|
"reviewerId" INTEGER,
|
|
"score" SMALLINT,
|
|
"review" TEXT,
|
|
|
|
CONSTRAINT "QuestAnswer_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_email_key" ON "public"."User"("email");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Hunt_creatorId_idx" ON "public"."Hunt"("creatorId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "HuntMember_memberId_huntId_idx" ON "public"."HuntMember"("memberId", "huntId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "HuntMember_memberId_idx" ON "public"."HuntMember"("memberId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "HuntMember_huntId_idx" ON "public"."HuntMember"("huntId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "HuntMember_memberId_huntId_key" ON "public"."HuntMember"("memberId", "huntId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "HuntTeam_ownerId_idx" ON "public"."HuntTeam"("ownerId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "HuntTeam_huntId_idx" ON "public"."HuntTeam"("huntId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "TeamMember_teamId_idx" ON "public"."TeamMember"("teamId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "TeamMember_memberId_idx" ON "public"."TeamMember"("memberId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "TeamMember_memberId_teamId_idx" ON "public"."TeamMember"("memberId", "teamId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "TeamMember_memberId_teamId_key" ON "public"."TeamMember"("memberId", "teamId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "HuntQuest_huntId_idx" ON "public"."HuntQuest"("huntId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "QuestAnswer_teamId_idx" ON "public"."QuestAnswer"("teamId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "QuestAnswer_memberId_idx" ON "public"."QuestAnswer"("memberId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "QuestAnswer_questId_idx" ON "public"."QuestAnswer"("questId");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "public"."UserLoginLinks" ADD CONSTRAINT "UserLoginLinks_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "public"."Hunt" ADD CONSTRAINT "Hunt_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "public"."HuntMember" ADD CONSTRAINT "HuntMember_huntId_fkey" FOREIGN KEY ("huntId") REFERENCES "public"."Hunt"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "public"."HuntMember" ADD CONSTRAINT "HuntMember_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "public"."HuntTeam" ADD CONSTRAINT "HuntTeam_huntId_fkey" FOREIGN KEY ("huntId") REFERENCES "public"."Hunt"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "public"."HuntTeam" ADD CONSTRAINT "HuntTeam_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "public"."TeamMember" ADD CONSTRAINT "TeamMember_teamId_fkey" FOREIGN KEY ("teamId") REFERENCES "public"."HuntTeam"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "public"."TeamMember" ADD CONSTRAINT "TeamMember_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "public"."HuntQuest" ADD CONSTRAINT "HuntQuest_huntId_fkey" FOREIGN KEY ("huntId") REFERENCES "public"."Hunt"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "public"."QuestAnswer" ADD CONSTRAINT "QuestAnswer_teamId_fkey" FOREIGN KEY ("teamId") REFERENCES "public"."HuntTeam"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "public"."QuestAnswer" ADD CONSTRAINT "QuestAnswer_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "public"."QuestAnswer" ADD CONSTRAINT "QuestAnswer_questId_fkey" FOREIGN KEY ("questId") REFERENCES "public"."HuntQuest"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "public"."QuestAnswer" ADD CONSTRAINT "QuestAnswer_reviewerId_fkey" FOREIGN KEY ("reviewerId") REFERENCES "public"."User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|