145 lines
4.3 KiB
SQL
145 lines
4.3 KiB
SQL
-- CreateEnum
|
|
CREATE TYPE "EventType" AS ENUM ('SHOWCASE', 'RELEASE', 'TOURNAMENT', 'OTHER');
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Game" (
|
|
"id" TEXT NOT NULL,
|
|
"slug" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"coverImage" TEXT,
|
|
"description" TEXT,
|
|
"releaseDate" TIMESTAMP(3),
|
|
"isTBD" BOOLEAN NOT NULL DEFAULT false,
|
|
"releaseDateText" TEXT,
|
|
"igdbId" INTEGER,
|
|
"rawgId" INTEGER,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
"deletedAt" TIMESTAMP(3),
|
|
|
|
CONSTRAINT "Game_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Platform" (
|
|
"id" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"slug" TEXT NOT NULL,
|
|
"icon" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Platform_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "GamePlatform" (
|
|
"gameId" TEXT NOT NULL,
|
|
"platformId" TEXT NOT NULL,
|
|
|
|
CONSTRAINT "GamePlatform_pkey" PRIMARY KEY ("gameId","platformId")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Event" (
|
|
"id" TEXT NOT NULL,
|
|
"title" TEXT NOT NULL,
|
|
"slug" TEXT NOT NULL,
|
|
"description" TEXT,
|
|
"startTime" TIMESTAMP(3) NOT NULL,
|
|
"endTime" TIMESTAMP(3),
|
|
"streamUrl" TEXT,
|
|
"coverImage" TEXT,
|
|
"type" "EventType" NOT NULL DEFAULT 'SHOWCASE',
|
|
"source" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
"deletedAt" TIMESTAMP(3),
|
|
|
|
CONSTRAINT "Event_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Subscription" (
|
|
"id" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"gameId" TEXT,
|
|
"eventId" TEXT,
|
|
"notifyEmail" BOOLEAN NOT NULL DEFAULT false,
|
|
"notifyPush" BOOLEAN NOT NULL DEFAULT true,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "Subscription_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "ThemeConfig" (
|
|
"id" TEXT NOT NULL,
|
|
"key" TEXT NOT NULL DEFAULT 'current_theme',
|
|
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
"gameTitle" TEXT NOT NULL,
|
|
"primaryColor" TEXT NOT NULL,
|
|
"secondaryColor" TEXT NOT NULL,
|
|
"backgroundColor" TEXT NOT NULL,
|
|
"backgroundImage" TEXT,
|
|
"logoImage" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "ThemeConfig_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Game_slug_key" ON "Game"("slug");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Game_igdbId_key" ON "Game"("igdbId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Game_rawgId_key" ON "Game"("rawgId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Game_releaseDate_idx" ON "Game"("releaseDate");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Game_slug_idx" ON "Game"("slug");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Platform_name_key" ON "Platform"("name");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Platform_slug_key" ON "Platform"("slug");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Event_slug_key" ON "Event"("slug");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Event_startTime_idx" ON "Event"("startTime");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Subscription_userId_idx" ON "Subscription"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Subscription_userId_gameId_key" ON "Subscription"("userId", "gameId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Subscription_userId_eventId_key" ON "Subscription"("userId", "eventId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "ThemeConfig_key_key" ON "ThemeConfig"("key");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "GamePlatform" ADD CONSTRAINT "GamePlatform_gameId_fkey" FOREIGN KEY ("gameId") REFERENCES "Game"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "GamePlatform" ADD CONSTRAINT "GamePlatform_platformId_fkey" FOREIGN KEY ("platformId") REFERENCES "Platform"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Subscription" ADD CONSTRAINT "Subscription_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Subscription" ADD CONSTRAINT "Subscription_gameId_fkey" FOREIGN KEY ("gameId") REFERENCES "Game"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Subscription" ADD CONSTRAINT "Subscription_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|