mirror of
https://github.com/Drop-OSS/drop.git
synced 2025-11-17 02:01:11 +10:00
feat: import of custom platforms & file extensions
This commit is contained in:
@ -1,8 +0,0 @@
|
||||
-- DropIndex
|
||||
DROP INDEX "public"."GameTag_name_idx";
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "public"."UserPlatform" ADD COLUMN "fileExtensions" TEXT[] DEFAULT ARRAY[]::TEXT[];
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "GameTag_name_idx" ON "public"."GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
|
||||
@ -1,14 +0,0 @@
|
||||
/*
|
||||
Warnings:
|
||||
|
||||
- Made the column `libraryId` on table `Game` required. This step will fail if there are existing NULL values in that column.
|
||||
|
||||
*/
|
||||
-- DropIndex
|
||||
DROP INDEX "public"."GameTag_name_idx";
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "public"."Game" ALTER COLUMN "libraryId" SET NOT NULL;
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "GameTag_name_idx" ON "public"."GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
|
||||
@ -1,32 +0,0 @@
|
||||
/*
|
||||
Warnings:
|
||||
|
||||
- Added the required column `mReleased` to the `Mod` table without a default value. This is not possible if the table is not empty.
|
||||
|
||||
*/
|
||||
-- DropIndex
|
||||
DROP INDEX "public"."GameTag_name_idx";
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "public"."Mod" ADD COLUMN "mReleased" TIMESTAMP(3) NOT NULL;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "public"."GameDLCMetadata" (
|
||||
"id" TEXT NOT NULL,
|
||||
"mName" TEXT NOT NULL,
|
||||
"mShortDescription" TEXT NOT NULL,
|
||||
"mDescription" TEXT NOT NULL,
|
||||
"mIconObjectId" TEXT NOT NULL,
|
||||
"mBannerObjectId" TEXT NOT NULL,
|
||||
"mCoverObjectId" TEXT NOT NULL,
|
||||
"mImageCarouselObjectIds" TEXT[],
|
||||
"mImageLibraryObjectIds" TEXT[],
|
||||
|
||||
CONSTRAINT "GameDLCMetadata_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "GameTag_name_idx" ON "public"."GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."GameDLCMetadata" ADD CONSTRAINT "GameDLCMetadata_id_fkey" FOREIGN KEY ("id") REFERENCES "public"."DLC"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
@ -1,3 +1,4 @@
|
||||
|
||||
-- enable pg_trgm
|
||||
CREATE EXTENSION pg_trgm;
|
||||
|
||||
@ -19,6 +20,9 @@ CREATE TYPE "public"."APITokenMode" AS ENUM ('User', 'System', 'Client');
|
||||
-- CreateEnum
|
||||
CREATE TYPE "public"."ClientCapabilities" AS ENUM ('peerAPI', 'userStatus', 'cloudSaves', 'trackPlaytime');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "public"."HardwarePlatform" AS ENUM ('windows', 'linux', 'macos');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "public"."MetadataSource" AS ENUM ('Manual', 'GiantBomb', 'PCGamingWiki', 'IGDB', 'Metacritic', 'OpenCritic');
|
||||
|
||||
@ -107,7 +111,7 @@ CREATE TABLE "public"."Client" (
|
||||
"userId" TEXT NOT NULL,
|
||||
"capabilities" "public"."ClientCapabilities"[],
|
||||
"name" TEXT NOT NULL,
|
||||
"platform" "public"."Platform" NOT NULL,
|
||||
"platform" "public"."HardwarePlatform" NOT NULL,
|
||||
"lastConnected" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "Client_pkey" PRIMARY KEY ("id")
|
||||
@ -134,13 +138,38 @@ CREATE TABLE "public"."CollectionEntry" (
|
||||
-- CreateTable
|
||||
CREATE TABLE "public"."UserPlatform" (
|
||||
"id" TEXT NOT NULL,
|
||||
"redistId" TEXT,
|
||||
"platformName" TEXT NOT NULL,
|
||||
"iconSvg" TEXT NOT NULL,
|
||||
"fileExtensions" TEXT[] DEFAULT ARRAY[]::TEXT[],
|
||||
"redistId" TEXT,
|
||||
|
||||
CONSTRAINT "UserPlatform_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "public"."PlatformLink" (
|
||||
"id" TEXT NOT NULL,
|
||||
"platform" "public"."HardwarePlatform",
|
||||
"userPlatformId" TEXT,
|
||||
|
||||
CONSTRAINT "PlatformLink_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "public"."LaunchOption" (
|
||||
"launchId" TEXT NOT NULL,
|
||||
"versionId" TEXT NOT NULL,
|
||||
"launchGId" TEXT,
|
||||
"installGId" TEXT,
|
||||
"uninstallGId" TEXT,
|
||||
"name" TEXT NOT NULL,
|
||||
"description" TEXT NOT NULL,
|
||||
"command" TEXT NOT NULL,
|
||||
"args" TEXT NOT NULL DEFAULT '',
|
||||
|
||||
CONSTRAINT "LaunchOption_pkey" PRIMARY KEY ("launchId")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "public"."Version" (
|
||||
"versionId" TEXT NOT NULL,
|
||||
@ -151,8 +180,6 @@ CREATE TABLE "public"."Version" (
|
||||
"redistId" TEXT,
|
||||
"dlcId" TEXT,
|
||||
"modId" TEXT,
|
||||
"platform" "public"."Platform",
|
||||
"userPlatformRedistId" TEXT,
|
||||
"dropletManifest" JSONB NOT NULL,
|
||||
|
||||
CONSTRAINT "Version_pkey" PRIMARY KEY ("versionId")
|
||||
@ -161,32 +188,22 @@ CREATE TABLE "public"."Version" (
|
||||
-- CreateTable
|
||||
CREATE TABLE "public"."GameVersion" (
|
||||
"versionId" TEXT NOT NULL,
|
||||
"setupCommand" TEXT NOT NULL DEFAULT '',
|
||||
"setupArgs" TEXT NOT NULL DEFAULT '',
|
||||
"installId" TEXT,
|
||||
"uninstallId" TEXT,
|
||||
"onlySetup" BOOLEAN NOT NULL DEFAULT false,
|
||||
"umuIdOverride" TEXT,
|
||||
"versionIndex" INTEGER NOT NULL,
|
||||
"delta" BOOLEAN NOT NULL DEFAULT false,
|
||||
"hidden" BOOLEAN NOT NULL DEFAULT false,
|
||||
"platformId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "GameVersion_pkey" PRIMARY KEY ("versionId")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "public"."LaunchOption" (
|
||||
"launchId" TEXT NOT NULL,
|
||||
"versionId" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
"description" TEXT NOT NULL,
|
||||
"launchCommand" TEXT NOT NULL,
|
||||
"launchArgs" TEXT NOT NULL DEFAULT '',
|
||||
|
||||
CONSTRAINT "LaunchOption_pkey" PRIMARY KEY ("launchId")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "public"."DLCVersion" (
|
||||
"versionId" TEXT NOT NULL,
|
||||
"platformId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "DLCVersion_pkey" PRIMARY KEY ("versionId")
|
||||
);
|
||||
@ -194,6 +211,7 @@ CREATE TABLE "public"."DLCVersion" (
|
||||
-- CreateTable
|
||||
CREATE TABLE "public"."RedistVersion" (
|
||||
"versionId" TEXT NOT NULL,
|
||||
"platformId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "RedistVersion_pkey" PRIMARY KEY ("versionId")
|
||||
);
|
||||
@ -202,6 +220,7 @@ CREATE TABLE "public"."RedistVersion" (
|
||||
CREATE TABLE "public"."ModVersion" (
|
||||
"versionId" TEXT NOT NULL,
|
||||
"dependencies" TEXT[],
|
||||
"platformId" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "ModVersion_pkey" PRIMARY KEY ("versionId")
|
||||
);
|
||||
@ -267,7 +286,7 @@ CREATE TABLE "public"."Game" (
|
||||
"mCoverObjectId" TEXT NOT NULL,
|
||||
"mImageCarouselObjectIds" TEXT[],
|
||||
"mImageLibraryObjectIds" TEXT[],
|
||||
"libraryId" TEXT,
|
||||
"libraryId" TEXT NOT NULL,
|
||||
"libraryPath" TEXT NOT NULL,
|
||||
|
||||
CONSTRAINT "Game_pkey" PRIMARY KEY ("id")
|
||||
@ -285,6 +304,21 @@ CREATE TABLE "public"."DLC" (
|
||||
CONSTRAINT "DLC_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "public"."GameDLCMetadata" (
|
||||
"id" TEXT NOT NULL,
|
||||
"mName" TEXT NOT NULL,
|
||||
"mShortDescription" TEXT NOT NULL,
|
||||
"mDescription" TEXT NOT NULL,
|
||||
"mIconObjectId" TEXT NOT NULL,
|
||||
"mBannerObjectId" TEXT NOT NULL,
|
||||
"mCoverObjectId" TEXT NOT NULL,
|
||||
"mImageCarouselObjectIds" TEXT[],
|
||||
"mImageLibraryObjectIds" TEXT[],
|
||||
|
||||
CONSTRAINT "GameDLCMetadata_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "public"."Redist" (
|
||||
"id" TEXT NOT NULL,
|
||||
@ -307,6 +341,7 @@ CREATE TABLE "public"."Mod" (
|
||||
"mName" TEXT NOT NULL,
|
||||
"mShortDescription" TEXT NOT NULL,
|
||||
"mDescription" TEXT NOT NULL,
|
||||
"mReleased" TIMESTAMP(3) NOT NULL,
|
||||
"mIconObjectId" TEXT NOT NULL,
|
||||
"mBannerObjectId" TEXT NOT NULL,
|
||||
"mCoverObjectId" TEXT NOT NULL,
|
||||
@ -486,9 +521,21 @@ CREATE INDEX "APIToken_token_idx" ON "public"."APIToken"("token");
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "UserPlatform_redistId_key" ON "public"."UserPlatform"("redistId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "LaunchOption_installGId_key" ON "public"."LaunchOption"("installGId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "LaunchOption_uninstallGId_key" ON "public"."LaunchOption"("uninstallGId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "Version_versionId_key" ON "public"."Version"("versionId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "GameVersion_installId_key" ON "public"."GameVersion"("installId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "GameVersion_uninstallId_key" ON "public"."GameVersion"("uninstallId");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "Screenshot_gameId_userId_idx" ON "public"."Screenshot"("gameId", "userId");
|
||||
|
||||
@ -574,7 +621,16 @@ ALTER TABLE "public"."CollectionEntry" ADD CONSTRAINT "CollectionEntry_collectio
|
||||
ALTER TABLE "public"."CollectionEntry" ADD CONSTRAINT "CollectionEntry_gameId_fkey" FOREIGN KEY ("gameId") REFERENCES "public"."Game"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."UserPlatform" ADD CONSTRAINT "UserPlatform_redistId_fkey" FOREIGN KEY ("redistId") REFERENCES "public"."Redist"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "public"."UserPlatform" ADD CONSTRAINT "UserPlatform_redistId_fkey" FOREIGN KEY ("redistId") REFERENCES "public"."Redist"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."PlatformLink" ADD CONSTRAINT "PlatformLink_userPlatformId_fkey" FOREIGN KEY ("userPlatformId") REFERENCES "public"."UserPlatform"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."LaunchOption" ADD CONSTRAINT "redistVersion_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."RedistVersion"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."LaunchOption" ADD CONSTRAINT "LaunchOption_launchGId_fkey" FOREIGN KEY ("launchGId") REFERENCES "public"."GameVersion"("versionId") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."Version" ADD CONSTRAINT "game_link" FOREIGN KEY ("gameId") REFERENCES "public"."Game"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
@ -588,27 +644,36 @@ ALTER TABLE "public"."Version" ADD CONSTRAINT "dlc_link" FOREIGN KEY ("dlcId") R
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."Version" ADD CONSTRAINT "mod_link" FOREIGN KEY ("modId") REFERENCES "public"."Mod"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."Version" ADD CONSTRAINT "Version_userPlatformRedistId_fkey" FOREIGN KEY ("userPlatformRedistId") REFERENCES "public"."UserPlatform"("redistId") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."GameVersion" ADD CONSTRAINT "GameVersion_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."Version"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."LaunchOption" ADD CONSTRAINT "gameVersion_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."GameVersion"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "public"."GameVersion" ADD CONSTRAINT "GameVersion_installId_fkey" FOREIGN KEY ("installId") REFERENCES "public"."LaunchOption"("launchId") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."LaunchOption" ADD CONSTRAINT "redistVersion_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."RedistVersion"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "public"."GameVersion" ADD CONSTRAINT "GameVersion_uninstallId_fkey" FOREIGN KEY ("uninstallId") REFERENCES "public"."LaunchOption"("launchId") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."GameVersion" ADD CONSTRAINT "GameVersion_platformId_fkey" FOREIGN KEY ("platformId") REFERENCES "public"."PlatformLink"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."DLCVersion" ADD CONSTRAINT "DLCVersion_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."Version"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."DLCVersion" ADD CONSTRAINT "DLCVersion_platformId_fkey" FOREIGN KEY ("platformId") REFERENCES "public"."PlatformLink"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."RedistVersion" ADD CONSTRAINT "RedistVersion_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."Version"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."RedistVersion" ADD CONSTRAINT "RedistVersion_platformId_fkey" FOREIGN KEY ("platformId") REFERENCES "public"."PlatformLink"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."ModVersion" ADD CONSTRAINT "ModVersion_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."Version"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."ModVersion" ADD CONSTRAINT "ModVersion_platformId_fkey" FOREIGN KEY ("platformId") REFERENCES "public"."PlatformLink"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."SaveSlot" ADD CONSTRAINT "SaveSlot_gameId_fkey" FOREIGN KEY ("gameId") REFERENCES "public"."Game"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
@ -636,6 +701,9 @@ ALTER TABLE "public"."Game" ADD CONSTRAINT "Game_libraryId_fkey" FOREIGN KEY ("l
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."DLC" ADD CONSTRAINT "DLC_libraryId_fkey" FOREIGN KEY ("libraryId") REFERENCES "public"."Library"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."GameDLCMetadata" ADD CONSTRAINT "GameDLCMetadata_id_fkey" FOREIGN KEY ("id") REFERENCES "public"."DLC"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."Redist" ADD CONSTRAINT "Redist_libraryId_fkey" FOREIGN KEY ("libraryId") REFERENCES "public"."Library"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
/*
|
||||
Warnings:
|
||||
|
||||
- You are about to drop the column `platform` on the `PlatformLink` table. All the data in the column will be lost.
|
||||
|
||||
*/
|
||||
-- DropIndex
|
||||
DROP INDEX "public"."GameTag_name_idx";
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "public"."PlatformLink" DROP COLUMN "platform",
|
||||
ADD COLUMN "hardwarePlatform" "public"."HardwarePlatform";
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "GameTag_name_idx" ON "public"."GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
|
||||
@ -0,0 +1,21 @@
|
||||
/*
|
||||
Warnings:
|
||||
|
||||
- You are about to drop the column `versionId` on the `LaunchOption` table. All the data in the column will be lost.
|
||||
|
||||
*/
|
||||
-- DropForeignKey
|
||||
ALTER TABLE "public"."LaunchOption" DROP CONSTRAINT "redistVersion_fkey";
|
||||
|
||||
-- DropIndex
|
||||
DROP INDEX "public"."GameTag_name_idx";
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "public"."LaunchOption" DROP COLUMN "versionId",
|
||||
ADD COLUMN "redistVersionId" TEXT;
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "GameTag_name_idx" ON "public"."GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."LaunchOption" ADD CONSTRAINT "redistVersion_fkey" FOREIGN KEY ("redistVersionId") REFERENCES "public"."RedistVersion"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
@ -0,0 +1,20 @@
|
||||
/*
|
||||
Warnings:
|
||||
|
||||
- You are about to drop the column `userPlatformId` on the `PlatformLink` table. All the data in the column will be lost.
|
||||
|
||||
*/
|
||||
-- DropForeignKey
|
||||
ALTER TABLE "public"."PlatformLink" DROP CONSTRAINT "PlatformLink_userPlatformId_fkey";
|
||||
|
||||
-- DropIndex
|
||||
DROP INDEX "public"."GameTag_name_idx";
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "public"."PlatformLink" DROP COLUMN "userPlatformId";
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "GameTag_name_idx" ON "public"."GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."PlatformLink" ADD CONSTRAINT "PlatformLink_id_fkey" FOREIGN KEY ("id") REFERENCES "public"."UserPlatform"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
||||
@ -1,3 +1,6 @@
|
||||
-- DropForeignKey
|
||||
ALTER TABLE "public"."PlatformLink" DROP CONSTRAINT "PlatformLink_id_fkey";
|
||||
|
||||
-- DropIndex
|
||||
DROP INDEX "public"."GameTag_name_idx";
|
||||
|
||||
@ -0,0 +1,20 @@
|
||||
/*
|
||||
Warnings:
|
||||
|
||||
- Made the column `redistId` on table `UserPlatform` required. This step will fail if there are existing NULL values in that column.
|
||||
|
||||
*/
|
||||
-- DropForeignKey
|
||||
ALTER TABLE "public"."UserPlatform" DROP CONSTRAINT "UserPlatform_redistId_fkey";
|
||||
|
||||
-- DropIndex
|
||||
DROP INDEX "public"."GameTag_name_idx";
|
||||
|
||||
-- AlterTable
|
||||
ALTER TABLE "public"."UserPlatform" ALTER COLUMN "redistId" SET NOT NULL;
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "GameTag_name_idx" ON "public"."GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "public"."UserPlatform" ADD CONSTRAINT "UserPlatform_redistId_fkey" FOREIGN KEY ("redistId") REFERENCES "public"."Redist"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
@ -14,7 +14,7 @@ model Client {
|
||||
capabilities ClientCapabilities[]
|
||||
|
||||
name String
|
||||
platform Platform
|
||||
platform HardwarePlatform
|
||||
lastConnected DateTime
|
||||
|
||||
lastAccessedSaves SaveSlot[]
|
||||
|
||||
@ -1,16 +1,62 @@
|
||||
enum HardwarePlatform {
|
||||
Windows @map("windows")
|
||||
Linux @map("linux")
|
||||
macOS @map("macos")
|
||||
// Switch @map("switch")
|
||||
// etc
|
||||
|
||||
// @@map("Platform")
|
||||
}
|
||||
|
||||
model UserPlatform {
|
||||
id String @id @default(uuid())
|
||||
|
||||
redistId String? @unique
|
||||
redist Redist? @relation(fields: [redistId], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
||||
|
||||
platformName String
|
||||
iconSvg String
|
||||
fileExtensions String[] @default([])
|
||||
|
||||
versions Version[]
|
||||
redistId String @unique
|
||||
redist Redist @relation(fields: [redistId], references: [id], onDelete: Cascade, onUpdate: Cascade)
|
||||
|
||||
//platform PlatformLink[]
|
||||
}
|
||||
|
||||
model PlatformLink {
|
||||
id String @id // This is either the ID of the user platform, or a repeat of the HardwarePlatform enum. It's cursed.
|
||||
|
||||
hardwarePlatform HardwarePlatform?
|
||||
// Waiting on weak reference
|
||||
// userPlatform UserPlatform? @relation(fields: [id], references: [id])
|
||||
|
||||
gameVersions GameVersion[]
|
||||
dlcVersions DLCVersion[]
|
||||
redistVerisons RedistVersion[]
|
||||
modVersions ModVersion[]
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
model LaunchOption {
|
||||
launchId String @id @default(uuid())
|
||||
|
||||
redistVersionId String?
|
||||
redistVersion RedistVersion? @relation(fields: [redistVersionId], references: [versionId], onDelete: Cascade, onUpdate: Cascade, map: "redistVersion_fkey")
|
||||
|
||||
launchGId String?
|
||||
launchGVersion GameVersion? @relation(name: "launches", fields: [launchGId], references: [versionId])
|
||||
installGId String? @unique
|
||||
installGVersion GameVersion? @relation(name: "install")
|
||||
uninstallGId String? @unique
|
||||
uninstallGVersion GameVersion? @relation(name: "uninstall")
|
||||
|
||||
name String
|
||||
description String
|
||||
|
||||
command String
|
||||
args String @default("")
|
||||
}
|
||||
|
||||
// Platform agnostic object
|
||||
model Version {
|
||||
versionId String @id @unique @default(uuid())
|
||||
|
||||
@ -19,72 +65,62 @@ model Version {
|
||||
versionName String
|
||||
created DateTime @default(now())
|
||||
|
||||
gameId String?
|
||||
game Game? @relation(fields: [gameId], references: [id], map: "game_link", onDelete: Cascade, onUpdate: Cascade)
|
||||
gameVersion GameVersion?
|
||||
gameId String?
|
||||
game Game? @relation(fields: [gameId], references: [id], map: "game_link", onDelete: Cascade, onUpdate: Cascade)
|
||||
gameVersions GameVersion[]
|
||||
|
||||
redistId String?
|
||||
redist Redist? @relation(fields: [redistId], references: [id], map: "redist_link", onDelete: Cascade, onUpdate: Cascade)
|
||||
redistVersion RedistVersion?
|
||||
redistId String?
|
||||
redist Redist? @relation(fields: [redistId], references: [id], map: "redist_link", onDelete: Cascade, onUpdate: Cascade)
|
||||
redistVersions RedistVersion[]
|
||||
|
||||
dlcId String?
|
||||
dlc DLC? @relation(fields: [dlcId], references: [id], map: "dlc_link", onDelete: Cascade, onUpdate: Cascade)
|
||||
dlcVersion DLCVersion?
|
||||
dlcId String?
|
||||
dlc DLC? @relation(fields: [dlcId], references: [id], map: "dlc_link", onDelete: Cascade, onUpdate: Cascade)
|
||||
dlcVersions DLCVersion[]
|
||||
|
||||
modId String?
|
||||
mod Mod? @relation(fields: [modId], references: [id], map: "mod_link", onDelete: Cascade, onUpdate: Cascade)
|
||||
modVersion ModVersion?
|
||||
|
||||
platform Platform?
|
||||
|
||||
userPlatformRedistId String?
|
||||
userPlatform UserPlatform? @relation(fields: [userPlatformRedistId], references: [redistId])
|
||||
modId String?
|
||||
mod Mod? @relation(fields: [modId], references: [id], map: "mod_link", onDelete: Cascade, onUpdate: Cascade)
|
||||
modVersions ModVersion[]
|
||||
|
||||
dropletManifest Json // Results from droplet
|
||||
}
|
||||
|
||||
// Platform specific object
|
||||
model GameVersion {
|
||||
versionId String @id
|
||||
version Version @relation(fields: [versionId], references: [versionId], onDelete: Cascade, onUpdate: Cascade)
|
||||
|
||||
redistDeps RedistVersion[]
|
||||
|
||||
launches LaunchOption[]
|
||||
launches LaunchOption[] @relation(name: "launches")
|
||||
|
||||
setupCommand String @default("")
|
||||
setupArgs String @default("")
|
||||
onlySetup Boolean @default(false)
|
||||
installId String? @unique
|
||||
install LaunchOption? @relation(name: "install", fields: [installId], references: [launchId])
|
||||
uninstallId String? @unique
|
||||
uninstall LaunchOption? @relation(name: "uninstall", fields: [uninstallId], references: [launchId])
|
||||
onlySetup Boolean @default(false)
|
||||
|
||||
umuIdOverride String?
|
||||
|
||||
versionIndex Int
|
||||
delta Boolean @default(false)
|
||||
hidden Boolean @default(false)
|
||||
|
||||
platformId String
|
||||
platform PlatformLink @relation(fields: [platformId], references: [id])
|
||||
}
|
||||
|
||||
model LaunchOption {
|
||||
launchId String @id @default(uuid())
|
||||
versionId String
|
||||
|
||||
gameVersion GameVersion? @relation(fields: [versionId], references: [versionId], onDelete: Cascade, onUpdate: Cascade, map: "gameVersion_fkey")
|
||||
redistVersion RedistVersion? @relation(fields: [versionId], references: [versionId], onDelete: Cascade, onUpdate: Cascade, map: "redistVersion_fkey")
|
||||
|
||||
name String
|
||||
description String
|
||||
|
||||
launchCommand String
|
||||
launchArgs String @default("")
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Platform specific object
|
||||
model DLCVersion {
|
||||
versionId String @id
|
||||
version Version @relation(fields: [versionId], references: [versionId], onDelete: Cascade, onUpdate: Cascade)
|
||||
|
||||
redistDeps RedistVersion[]
|
||||
|
||||
platformId String
|
||||
platform PlatformLink @relation(fields: [platformId], references: [id])
|
||||
}
|
||||
|
||||
// Platform specific object
|
||||
model RedistVersion {
|
||||
versionId String @id
|
||||
version Version @relation(fields: [versionId], references: [versionId], onDelete: Cascade, onUpdate: Cascade)
|
||||
@ -93,13 +129,20 @@ model RedistVersion {
|
||||
|
||||
gameDependees GameVersion[]
|
||||
dlcDependees DLCVersion[]
|
||||
|
||||
platformId String
|
||||
platform PlatformLink @relation(fields: [platformId], references: [id])
|
||||
}
|
||||
|
||||
// Platform specific object
|
||||
model ModVersion {
|
||||
versionId String @id
|
||||
version Version @relation(fields: [versionId], references: [versionId], onDelete: Cascade, onUpdate: Cascade)
|
||||
|
||||
dependencies String[]
|
||||
|
||||
platformId String
|
||||
platform PlatformLink @relation(fields: [platformId], references: [id])
|
||||
}
|
||||
|
||||
// A save slot for a game
|
||||
|
||||
Reference in New Issue
Block a user