diff --git a/prisma/migrations/20220907081831_create_tournament_tables/migration.sql b/prisma/migrations/20220907081831_create_tournament_tables/migration.sql new file mode 100644 index 0000000..9b417f2 --- /dev/null +++ b/prisma/migrations/20220907081831_create_tournament_tables/migration.sql @@ -0,0 +1,102 @@ +-- CreateTable +CREATE TABLE "Tournament" ( + "id" SERIAL NOT NULL, + "title" TEXT NOT NULL, + "description" TEXT NOT NULL, + "thumbnail_image" TEXT NOT NULL, + "cover_image" TEXT NOT NULL, + "start_date" DATE NOT NULL, + "end_date" DATE NOT NULL, + "location" TEXT NOT NULL, + "website" TEXT NOT NULL, + "votes_count" INTEGER NOT NULL DEFAULT 0, + + CONSTRAINT "Tournament_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "TournamentPrize" ( + "id" SERIAL NOT NULL, + "title" TEXT NOT NULL, + "amount" TEXT NOT NULL, + "image" TEXT NOT NULL, + "tournament_id" INTEGER NOT NULL, + + CONSTRAINT "TournamentPrize_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "TournamentJudge" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "company" TEXT NOT NULL, + "twitter" TEXT, + "tournament_id" INTEGER NOT NULL, + + CONSTRAINT "TournamentJudge_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "TournamentFAQ" ( + "id" SERIAL NOT NULL, + "question" TEXT NOT NULL, + "answer" TEXT NOT NULL, + "tournament_id" INTEGER NOT NULL, + + CONSTRAINT "TournamentFAQ_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "TournamentEvent" ( + "id" SERIAL NOT NULL, + "title" TEXT NOT NULL, + "image" TEXT NOT NULL, + "description" TEXT NOT NULL, + "date" DATE NOT NULL, + "location" TEXT NOT NULL, + "website" TEXT NOT NULL, + "type" INTEGER NOT NULL, + "tournament_id" INTEGER NOT NULL, + + CONSTRAINT "TournamentEvent_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "TournamentParticipant" ( + "tournament_id" INTEGER NOT NULL, + "user_id" INTEGER NOT NULL, + + CONSTRAINT "TournamentParticipant_pkey" PRIMARY KEY ("tournament_id","user_id") +); + +-- CreateTable +CREATE TABLE "TournamentProject" ( + "tournament_id" INTEGER NOT NULL, + "project_id" INTEGER NOT NULL, + + CONSTRAINT "TournamentProject_pkey" PRIMARY KEY ("tournament_id","project_id") +); + +-- AddForeignKey +ALTER TABLE "TournamentPrize" ADD CONSTRAINT "TournamentPrize_tournament_id_fkey" FOREIGN KEY ("tournament_id") REFERENCES "Tournament"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "TournamentJudge" ADD CONSTRAINT "TournamentJudge_tournament_id_fkey" FOREIGN KEY ("tournament_id") REFERENCES "Tournament"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "TournamentFAQ" ADD CONSTRAINT "TournamentFAQ_tournament_id_fkey" FOREIGN KEY ("tournament_id") REFERENCES "Tournament"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "TournamentEvent" ADD CONSTRAINT "TournamentEvent_tournament_id_fkey" FOREIGN KEY ("tournament_id") REFERENCES "Tournament"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "TournamentParticipant" ADD CONSTRAINT "TournamentParticipant_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "TournamentParticipant" ADD CONSTRAINT "TournamentParticipant_tournament_id_fkey" FOREIGN KEY ("tournament_id") REFERENCES "Tournament"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "TournamentProject" ADD CONSTRAINT "TournamentProject_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "Project"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "TournamentProject" ADD CONSTRAINT "TournamentProject_tournament_id_fkey" FOREIGN KEY ("tournament_id") REFERENCES "Tournament"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index c7c5c26..87b4d2a 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -67,6 +67,8 @@ model User { userKeys UserKey[] skills Skill[] roles UsersOnWorkRoles[] + + tournaments TournamentParticipant[] } model UserKey { @@ -136,6 +138,7 @@ model Project { tags Tag[] recruit_roles ProjectRecruitRoles[] + tournaments TournamentProject[] } model ProjectRecruitRoles { @@ -272,3 +275,87 @@ model HostedImage { createdAt DateTime @default(now()) is_used Boolean @default(false) } + +// ----------------- +// Tournament +// ----------------- +model Tournament { + id Int @id @default(autoincrement()) + title String + description String + thumbnail_image String + cover_image String + start_date DateTime @db.Date + end_date DateTime @db.Date + location String + website String + votes_count Int @default(0) + + prizes TournamentPrize[] + judges TournamentJudge[] + faqs TournamentFAQ[] + events TournamentEvent[] + participants TournamentParticipant[] + projects TournamentProject[] +} + +model TournamentPrize { + id Int @id @default(autoincrement()) + title String + amount String + image String + + tournament Tournament @relation(fields: [tournament_id], references: [id]) + tournament_id Int +} + +model TournamentJudge { + id Int @id @default(autoincrement()) + name String + company String + twitter String? + + tournament Tournament @relation(fields: [tournament_id], references: [id]) + tournament_id Int +} + +model TournamentFAQ { + id Int @id @default(autoincrement()) + question String + answer String + + tournament Tournament @relation(fields: [tournament_id], references: [id]) + tournament_id Int +} + +model TournamentEvent { + id Int @id @default(autoincrement()) + title String + image String + description String + date DateTime @db.Date + location String + website String + type Int + + tournament Tournament @relation(fields: [tournament_id], references: [id]) + tournament_id Int +} + +model TournamentParticipant { + tournament Tournament @relation(fields: [tournament_id], references: [id]) + tournament_id Int + user User @relation(fields: [user_id], references: [id]) + user_id Int + + @@id([tournament_id, user_id]) +} + +model TournamentProject { + tournament Tournament @relation(fields: [tournament_id], references: [id]) + tournament_id Int + project Project @relation(fields: [project_id], references: [id]) + project_id Int + + @@id([tournament_id, project_id]) +}