From 4770bf03072214ec13bebba825f4bad5af9b824f Mon Sep 17 00:00:00 2001 From: smyalygames Date: Mon, 20 Feb 2023 17:11:39 +0000 Subject: [PATCH] feat(db): finished database schema for outreach --- .../20230220171028_outreach/migration.sql | 68 +++++++++++++++++++ prisma/schema.prisma | 19 ++++-- 2 files changed, 81 insertions(+), 6 deletions(-) create mode 100644 prisma/migrations/20230220171028_outreach/migration.sql diff --git a/prisma/migrations/20230220171028_outreach/migration.sql b/prisma/migrations/20230220171028_outreach/migration.sql new file mode 100644 index 0000000..4410b38 --- /dev/null +++ b/prisma/migrations/20230220171028_outreach/migration.sql @@ -0,0 +1,68 @@ +-- CreateTable +CREATE TABLE "Event" ( + "id" SERIAL NOT NULL, + "leaderId" TEXT NOT NULL, + "startTime" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "endTime" TIMESTAMP(3), + "eventTypeType" TEXT NOT NULL, + + CONSTRAINT "Event_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "EventType" ( + "type" TEXT NOT NULL, + + CONSTRAINT "EventType_pkey" PRIMARY KEY ("type") +); + +-- CreateTable +CREATE TABLE "EventStat" ( + "eventId" INTEGER NOT NULL, + "statId" INTEGER NOT NULL, + + CONSTRAINT "EventStat_pkey" PRIMARY KEY ("eventId","statId") +); + +-- CreateTable +CREATE TABLE "Stat" ( + "id" SERIAL NOT NULL, + "leaderId" TEXT NOT NULL, + "vegan" INTEGER NOT NULL DEFAULT 0, + "considered" INTEGER NOT NULL DEFAULT 0, + "antivegan" INTEGER NOT NULL DEFAULT 0, + "thanked" INTEGER NOT NULL DEFAULT 0, + "documentary" INTEGER NOT NULL DEFAULT 0, + "educated" INTEGER NOT NULL DEFAULT 0, + + CONSTRAINT "Stat_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ParticipantStat" ( + "statId" INTEGER NOT NULL, + "userId" TEXT NOT NULL, + + CONSTRAINT "ParticipantStat_pkey" PRIMARY KEY ("statId","userId") +); + +-- AddForeignKey +ALTER TABLE "Event" ADD CONSTRAINT "Event_eventTypeType_fkey" FOREIGN KEY ("eventTypeType") REFERENCES "EventType"("type") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Event" ADD CONSTRAINT "Event_leaderId_fkey" FOREIGN KEY ("leaderId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EventStat" ADD CONSTRAINT "EventStat_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "EventStat" ADD CONSTRAINT "EventStat_statId_fkey" FOREIGN KEY ("statId") REFERENCES "Stat"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Stat" ADD CONSTRAINT "Stat_leaderId_fkey" FOREIGN KEY ("leaderId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ParticipantStat" ADD CONSTRAINT "ParticipantStat_statId_fkey" FOREIGN KEY ("statId") REFERENCES "Stat"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ParticipantStat" ADD CONSTRAINT "ParticipantStat_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index ec44198..150373e 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -88,13 +88,20 @@ model Verify { } model Event { - id Int @id @default(autoincrement()) - leader User @relation("eventLeader", fields: [leaderId], references: [id]) // Not sure if this will stay - leaderId String - startTime DateTime @default(now()) - endTime DateTime? + id Int @id @default(autoincrement()) + type EventType @relation(fields: [eventTypeType], references: [type]) + leader User @relation("eventLeader", fields: [leaderId], references: [id]) // Not sure if this will stay + leaderId String + startTime DateTime @default(now()) + endTime DateTime? // Add a type of Event like Discord Outreach, Voice Chat, etc? - EventStat EventStat[] + EventStat EventStat[] + eventTypeType String +} + +model EventType { + type String @id + Event Event[] } model EventStat {