feat: import of custom platforms & file extensions

This commit is contained in:
DecDuck
2025-09-06 18:29:04 +10:00
parent 7266d0485b
commit fcfc30e5df
36 changed files with 13182 additions and 271 deletions

View File

@ -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));

View File

@ -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));

View File

@ -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;

View File

@ -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;

View File

@ -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));

View File

@ -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;

View File

@ -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;

View File

@ -1,3 +1,6 @@
-- DropForeignKey
ALTER TABLE "public"."PlatformLink" DROP CONSTRAINT "PlatformLink_id_fkey";
-- DropIndex
DROP INDEX "public"."GameTag_name_idx";

View File

@ -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;