feat: partial user platform support + statusMessage -> message

This commit is contained in:
DecDuck
2025-08-27 11:25:23 +10:00
parent 3af00e085e
commit 8efddc07bc
143 changed files with 831 additions and 593 deletions

View File

@ -1,35 +0,0 @@
-- DropForeignKey
ALTER TABLE "public"."Version" DROP CONSTRAINT "addon_link";
-- DropForeignKey
ALTER TABLE "public"."Version" DROP CONSTRAINT "game_link";
-- DropForeignKey
ALTER TABLE "public"."Version" DROP CONSTRAINT "mod_link";
-- DropForeignKey
ALTER TABLE "public"."Version" DROP CONSTRAINT "redist_link";
-- DropIndex
DROP INDEX "public"."GameTag_name_idx";
-- AlterTable
ALTER TABLE "public"."GameVersion" ADD COLUMN "setupArgs" TEXT NOT NULL DEFAULT '';
-- AlterTable
ALTER TABLE "public"."GameVersionLaunch" ADD COLUMN "launchArgs" TEXT NOT NULL DEFAULT '';
-- CreateIndex
CREATE INDEX "GameTag_name_idx" ON "public"."GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
-- AddForeignKey
ALTER TABLE "public"."Version" ADD CONSTRAINT "game_link" FOREIGN KEY ("rootId") REFERENCES "public"."Game"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."Version" ADD CONSTRAINT "redist_link" FOREIGN KEY ("rootId") REFERENCES "public"."Redist"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."Version" ADD CONSTRAINT "addon_link" FOREIGN KEY ("rootId") REFERENCES "public"."Addon"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."Version" ADD CONSTRAINT "mod_link" FOREIGN KEY ("rootId") REFERENCES "public"."Mod"("id") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -1,42 +0,0 @@
/*
Warnings:
- You are about to drop the column `rootId` on the `Version` table. All the data in the column will be lost.
*/
-- DropForeignKey
ALTER TABLE "public"."Version" DROP CONSTRAINT "addon_link";
-- DropForeignKey
ALTER TABLE "public"."Version" DROP CONSTRAINT "game_link";
-- DropForeignKey
ALTER TABLE "public"."Version" DROP CONSTRAINT "mod_link";
-- DropForeignKey
ALTER TABLE "public"."Version" DROP CONSTRAINT "redist_link";
-- DropIndex
DROP INDEX "public"."GameTag_name_idx";
-- AlterTable
ALTER TABLE "public"."Version" DROP COLUMN "rootId",
ADD COLUMN "addonId" TEXT,
ADD COLUMN "gameId" TEXT,
ADD COLUMN "modId" TEXT,
ADD COLUMN "redistId" TEXT;
-- CreateIndex
CREATE INDEX "GameTag_name_idx" ON "public"."GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
-- AddForeignKey
ALTER TABLE "public"."Version" ADD CONSTRAINT "game_link" FOREIGN KEY ("gameId") REFERENCES "public"."Game"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."Version" ADD CONSTRAINT "redist_link" FOREIGN KEY ("redistId") REFERENCES "public"."Redist"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."Version" ADD CONSTRAINT "addon_link" FOREIGN KEY ("addonId") REFERENCES "public"."Addon"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."Version" ADD CONSTRAINT "mod_link" FOREIGN KEY ("modId") REFERENCES "public"."Mod"("id") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -1,35 +0,0 @@
-- DropForeignKey
ALTER TABLE "public"."AddonVersion" DROP CONSTRAINT "AddonVersion_versionId_fkey";
-- DropForeignKey
ALTER TABLE "public"."GameVersion" DROP CONSTRAINT "GameVersion_versionId_fkey";
-- DropForeignKey
ALTER TABLE "public"."GameVersionLaunch" DROP CONSTRAINT "GameVersionLaunch_versionId_fkey";
-- DropForeignKey
ALTER TABLE "public"."ModVersion" DROP CONSTRAINT "ModVersion_versionId_fkey";
-- DropForeignKey
ALTER TABLE "public"."RedistVersion" DROP CONSTRAINT "RedistVersion_versionId_fkey";
-- DropIndex
DROP INDEX "public"."GameTag_name_idx";
-- CreateIndex
CREATE INDEX "GameTag_name_idx" ON "public"."GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
-- 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"."GameVersionLaunch" ADD CONSTRAINT "GameVersionLaunch_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."GameVersion"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."AddonVersion" ADD CONSTRAINT "AddonVersion_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."Version"("versionId") ON DELETE CASCADE 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"."ModVersion" ADD CONSTRAINT "ModVersion_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."Version"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -1,8 +0,0 @@
-- DropIndex
DROP INDEX "public"."GameTag_name_idx";
-- AlterTable
ALTER TABLE "public"."Library" ADD COLUMN "mode" "public"."LibraryMode" NOT NULL DEFAULT 'Game';
-- CreateIndex
CREATE INDEX "GameTag_name_idx" ON "public"."GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));

View File

@ -1,99 +0,0 @@
/*
Warnings:
- The values [Addon] on the enum `LibraryMode` will be removed. If these variants are still used in the database, this will fail.
- You are about to drop the column `addonId` on the `Version` table. All the data in the column will be lost.
- You are about to drop the `Addon` table. If the table is not empty, all the data it contains will be lost.
- You are about to drop the `AddonVersion` table. If the table is not empty, all the data it contains will be lost.
- You are about to drop the `_AddonVersionToRedistVersion` table. If the table is not empty, all the data it contains will be lost.
*/
-- AlterEnum
BEGIN;
CREATE TYPE "public"."LibraryMode_new" AS ENUM ('Game', 'Redist', 'DLC', 'Mod');
ALTER TABLE "public"."Library" ALTER COLUMN "mode" DROP DEFAULT;
ALTER TABLE "public"."Library" ALTER COLUMN "mode" TYPE "public"."LibraryMode_new" USING ("mode"::text::"public"."LibraryMode_new");
ALTER TYPE "public"."LibraryMode" RENAME TO "LibraryMode_old";
ALTER TYPE "public"."LibraryMode_new" RENAME TO "LibraryMode";
DROP TYPE "public"."LibraryMode_old";
ALTER TABLE "public"."Library" ALTER COLUMN "mode" SET DEFAULT 'Game';
COMMIT;
-- DropForeignKey
ALTER TABLE "public"."Addon" DROP CONSTRAINT "Addon_libraryId_fkey";
-- DropForeignKey
ALTER TABLE "public"."AddonVersion" DROP CONSTRAINT "AddonVersion_versionId_fkey";
-- DropForeignKey
ALTER TABLE "public"."Version" DROP CONSTRAINT "addon_link";
-- DropForeignKey
ALTER TABLE "public"."_AddonVersionToRedistVersion" DROP CONSTRAINT "_AddonVersionToRedistVersion_A_fkey";
-- DropForeignKey
ALTER TABLE "public"."_AddonVersionToRedistVersion" DROP CONSTRAINT "_AddonVersionToRedistVersion_B_fkey";
-- DropIndex
DROP INDEX "public"."GameTag_name_idx";
-- AlterTable
ALTER TABLE "public"."Version" DROP COLUMN "addonId",
ADD COLUMN "dlcId" TEXT;
-- DropTable
DROP TABLE "public"."Addon";
-- DropTable
DROP TABLE "public"."AddonVersion";
-- DropTable
DROP TABLE "public"."_AddonVersionToRedistVersion";
-- CreateTable
CREATE TABLE "public"."DLCVersion" (
"versionId" TEXT NOT NULL,
CONSTRAINT "DLCVersion_pkey" PRIMARY KEY ("versionId")
);
-- CreateTable
CREATE TABLE "public"."DLC" (
"id" TEXT NOT NULL,
"name" TEXT NOT NULL,
"description" TEXT NOT NULL,
"iconObjectId" TEXT NOT NULL,
"libraryId" TEXT NOT NULL,
"libraryPath" TEXT NOT NULL,
CONSTRAINT "DLC_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "public"."_DLCVersionToRedistVersion" (
"A" TEXT NOT NULL,
"B" TEXT NOT NULL,
CONSTRAINT "_DLCVersionToRedistVersion_AB_pkey" PRIMARY KEY ("A","B")
);
-- CreateIndex
CREATE INDEX "_DLCVersionToRedistVersion_B_index" ON "public"."_DLCVersionToRedistVersion"("B");
-- CreateIndex
CREATE INDEX "GameTag_name_idx" ON "public"."GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
-- AddForeignKey
ALTER TABLE "public"."Version" ADD CONSTRAINT "dlc_link" FOREIGN KEY ("dlcId") REFERENCES "public"."DLC"("id") ON DELETE CASCADE 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"."DLC" ADD CONSTRAINT "DLC_libraryId_fkey" FOREIGN KEY ("libraryId") REFERENCES "public"."Library"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."_DLCVersionToRedistVersion" ADD CONSTRAINT "_DLCVersionToRedistVersion_A_fkey" FOREIGN KEY ("A") REFERENCES "public"."DLCVersion"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."_DLCVersionToRedistVersion" ADD CONSTRAINT "_DLCVersionToRedistVersion_B_fkey" FOREIGN KEY ("B") REFERENCES "public"."RedistVersion"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -1,8 +0,0 @@
-- DropIndex
DROP INDEX "GameTag_name_idx";
-- AlterTable
ALTER TABLE "APIToken" ADD COLUMN "expiresAt" TIMESTAMP(3);
-- CreateIndex
CREATE INDEX "GameTag_name_idx" ON "GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));

View File

@ -1,5 +0,0 @@
-- DropIndex
DROP INDEX "GameTag_name_idx";
-- CreateIndex
CREATE INDEX "GameTag_name_idx" ON "GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));

View File

@ -1,4 +1,4 @@
-- Add pg_trgm
-- enable pg_trgm
CREATE EXTENSION pg_trgm;
-- CreateEnum
@ -8,7 +8,7 @@ CREATE TYPE "public"."Platform" AS ENUM ('windows', 'linux', 'macos');
CREATE TYPE "public"."LibraryBackend" AS ENUM ('Filesystem', 'FlatFilesystem');
-- CreateEnum
CREATE TYPE "public"."LibraryMode" AS ENUM ('Game', 'Redist', 'Addon', 'Mod');
CREATE TYPE "public"."LibraryMode" AS ENUM ('Game', 'Redist', 'DLC', 'Mod');
-- CreateEnum
CREATE TYPE "public"."AuthMec" AS ENUM ('Simple', 'OpenID');
@ -40,6 +40,7 @@ CREATE TABLE "public"."Library" (
"name" TEXT NOT NULL,
"backend" "public"."LibraryBackend" NOT NULL,
"options" JSONB NOT NULL,
"mode" "public"."LibraryMode" NOT NULL DEFAULT 'Game',
CONSTRAINT "Library_pkey" PRIMARY KEY ("id")
);
@ -75,6 +76,7 @@ CREATE TABLE "public"."APIToken" (
"userId" TEXT,
"clientId" TEXT,
"acls" TEXT[],
"expiresAt" TIMESTAMP(3),
CONSTRAINT "APIToken_pkey" PRIMARY KEY ("id")
);
@ -129,14 +131,28 @@ CREATE TABLE "public"."CollectionEntry" (
CONSTRAINT "CollectionEntry_pkey" PRIMARY KEY ("collectionId","gameId")
);
-- CreateTable
CREATE TABLE "public"."UserPlatform" (
"id" TEXT NOT NULL,
"redistId" TEXT,
"platformName" TEXT NOT NULL,
"iconSvg" TEXT NOT NULL,
CONSTRAINT "UserPlatform_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "public"."Version" (
"versionId" TEXT NOT NULL,
"rootId" TEXT NOT NULL,
"versionPath" TEXT NOT NULL,
"versionName" TEXT NOT NULL,
"created" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"platform" "public"."Platform" NOT NULL,
"gameId" TEXT,
"redistId" TEXT,
"dlcId" TEXT,
"modId" TEXT,
"platform" "public"."Platform",
"userPlatformRedistId" TEXT,
"dropletManifest" JSONB NOT NULL,
CONSTRAINT "Version_pkey" PRIMARY KEY ("versionId")
@ -145,31 +161,34 @@ CREATE TABLE "public"."Version" (
-- CreateTable
CREATE TABLE "public"."GameVersion" (
"versionId" TEXT NOT NULL,
"setup" TEXT NOT NULL DEFAULT '',
"setupCommand" TEXT NOT NULL DEFAULT '',
"setupArgs" TEXT NOT NULL DEFAULT '',
"onlySetup" BOOLEAN NOT NULL DEFAULT false,
"umuIdOverride" TEXT,
"versionIndex" INTEGER NOT NULL,
"delta" BOOLEAN NOT NULL DEFAULT false,
"hidden" BOOLEAN NOT NULL DEFAULT false,
CONSTRAINT "GameVersion_pkey" PRIMARY KEY ("versionId")
);
-- CreateTable
CREATE TABLE "public"."GameVersionLaunch" (
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 "GameVersionLaunch_pkey" PRIMARY KEY ("launchId")
CONSTRAINT "LaunchOption_pkey" PRIMARY KEY ("launchId")
);
-- CreateTable
CREATE TABLE "public"."AddonVersion" (
CREATE TABLE "public"."DLCVersion" (
"versionId" TEXT NOT NULL,
CONSTRAINT "AddonVersion_pkey" PRIMARY KEY ("versionId")
CONSTRAINT "DLCVersion_pkey" PRIMARY KEY ("versionId")
);
-- CreateTable
@ -255,7 +274,7 @@ CREATE TABLE "public"."Game" (
);
-- CreateTable
CREATE TABLE "public"."Addon" (
CREATE TABLE "public"."DLC" (
"id" TEXT NOT NULL,
"name" TEXT NOT NULL,
"description" TEXT NOT NULL,
@ -263,7 +282,7 @@ CREATE TABLE "public"."Addon" (
"libraryId" TEXT NOT NULL,
"libraryPath" TEXT NOT NULL,
CONSTRAINT "Addon_pkey" PRIMARY KEY ("id")
CONSTRAINT "DLC_pkey" PRIMARY KEY ("id")
);
-- CreateTable
@ -411,11 +430,11 @@ CREATE TABLE "public"."_GameVersionToRedistVersion" (
);
-- CreateTable
CREATE TABLE "public"."_AddonVersionToRedistVersion" (
CREATE TABLE "public"."_DLCVersionToRedistVersion" (
"A" TEXT NOT NULL,
"B" TEXT NOT NULL,
CONSTRAINT "_AddonVersionToRedistVersion_AB_pkey" PRIMARY KEY ("A","B")
CONSTRAINT "_DLCVersionToRedistVersion_AB_pkey" PRIMARY KEY ("A","B")
);
-- CreateTable
@ -464,6 +483,9 @@ CREATE UNIQUE INDEX "APIToken_token_key" ON "public"."APIToken"("token");
-- CreateIndex
CREATE INDEX "APIToken_token_idx" ON "public"."APIToken"("token");
-- CreateIndex
CREATE UNIQUE INDEX "UserPlatform_redistId_key" ON "public"."UserPlatform"("redistId");
-- CreateIndex
CREATE UNIQUE INDEX "Version_versionId_key" ON "public"."Version"("versionId");
@ -510,7 +532,7 @@ CREATE UNIQUE INDEX "Notification_userId_nonce_key" ON "public"."Notification"("
CREATE INDEX "_GameVersionToRedistVersion_B_index" ON "public"."_GameVersionToRedistVersion"("B");
-- CreateIndex
CREATE INDEX "_AddonVersionToRedistVersion_B_index" ON "public"."_AddonVersionToRedistVersion"("B");
CREATE INDEX "_DLCVersionToRedistVersion_B_index" ON "public"."_DLCVersionToRedistVersion"("B");
-- CreateIndex
CREATE INDEX "_GameToGameTag_B_index" ON "public"."_GameToGameTag"("B");
@ -552,31 +574,40 @@ 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"."Version" ADD CONSTRAINT "game_link" FOREIGN KEY ("rootId") REFERENCES "public"."Game"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE "public"."UserPlatform" ADD CONSTRAINT "UserPlatform_redistId_fkey" FOREIGN KEY ("redistId") REFERENCES "public"."Redist"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."Version" ADD CONSTRAINT "redist_link" FOREIGN KEY ("rootId") REFERENCES "public"."Redist"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE "public"."Version" ADD CONSTRAINT "game_link" FOREIGN KEY ("gameId") REFERENCES "public"."Game"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."Version" ADD CONSTRAINT "addon_link" FOREIGN KEY ("rootId") REFERENCES "public"."Addon"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE "public"."Version" ADD CONSTRAINT "redist_link" FOREIGN KEY ("redistId") REFERENCES "public"."Redist"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."Version" ADD CONSTRAINT "mod_link" FOREIGN KEY ("rootId") REFERENCES "public"."Mod"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE "public"."Version" ADD CONSTRAINT "dlc_link" FOREIGN KEY ("dlcId") REFERENCES "public"."DLC"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."GameVersion" ADD CONSTRAINT "GameVersion_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."Version"("versionId") ON DELETE RESTRICT ON UPDATE CASCADE;
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"."GameVersionLaunch" ADD CONSTRAINT "GameVersionLaunch_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."GameVersion"("versionId") ON DELETE RESTRICT ON UPDATE CASCADE;
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"."AddonVersion" ADD CONSTRAINT "AddonVersion_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."Version"("versionId") ON DELETE RESTRICT ON UPDATE CASCADE;
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"."RedistVersion" ADD CONSTRAINT "RedistVersion_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."Version"("versionId") ON DELETE RESTRICT ON UPDATE CASCADE;
ALTER TABLE "public"."LaunchOption" ADD CONSTRAINT "gameVersion_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."GameVersion"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."ModVersion" ADD CONSTRAINT "ModVersion_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."Version"("versionId") ON DELETE RESTRICT ON UPDATE CASCADE;
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"."DLCVersion" ADD CONSTRAINT "DLCVersion_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."Version"("versionId") ON DELETE CASCADE 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"."ModVersion" ADD CONSTRAINT "ModVersion_versionId_fkey" FOREIGN KEY ("versionId") REFERENCES "public"."Version"("versionId") ON DELETE CASCADE 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;
@ -603,7 +634,7 @@ ALTER TABLE "public"."Playtime" ADD CONSTRAINT "Playtime_userId_fkey" FOREIGN KE
ALTER TABLE "public"."Game" ADD CONSTRAINT "Game_libraryId_fkey" FOREIGN KEY ("libraryId") REFERENCES "public"."Library"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."Addon" ADD CONSTRAINT "Addon_libraryId_fkey" FOREIGN KEY ("libraryId") REFERENCES "public"."Library"("id") ON DELETE CASCADE ON UPDATE CASCADE;
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"."Redist" ADD CONSTRAINT "Redist_libraryId_fkey" FOREIGN KEY ("libraryId") REFERENCES "public"."Library"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@ -630,10 +661,10 @@ ALTER TABLE "public"."_GameVersionToRedistVersion" ADD CONSTRAINT "_GameVersionT
ALTER TABLE "public"."_GameVersionToRedistVersion" ADD CONSTRAINT "_GameVersionToRedistVersion_B_fkey" FOREIGN KEY ("B") REFERENCES "public"."RedistVersion"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."_AddonVersionToRedistVersion" ADD CONSTRAINT "_AddonVersionToRedistVersion_A_fkey" FOREIGN KEY ("A") REFERENCES "public"."AddonVersion"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE "public"."_DLCVersionToRedistVersion" ADD CONSTRAINT "_DLCVersionToRedistVersion_A_fkey" FOREIGN KEY ("A") REFERENCES "public"."DLCVersion"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."_AddonVersionToRedistVersion" ADD CONSTRAINT "_AddonVersionToRedistVersion_B_fkey" FOREIGN KEY ("B") REFERENCES "public"."RedistVersion"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE "public"."_DLCVersionToRedistVersion" ADD CONSTRAINT "_DLCVersionToRedistVersion_B_fkey" FOREIGN KEY ("B") REFERENCES "public"."RedistVersion"("versionId") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "public"."_GameToGameTag" ADD CONSTRAINT "_GameToGameTag_A_fkey" FOREIGN KEY ("A") REFERENCES "public"."Game"("id") ON DELETE CASCADE ON UPDATE CASCADE;

View File

@ -2,7 +2,7 @@
DROP INDEX "public"."GameTag_name_idx";
-- AlterTable
ALTER TABLE "public"."GameVersion" ADD COLUMN "hidden" BOOLEAN NOT NULL DEFAULT false;
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,3 +1,16 @@
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[]
}
model Version {
versionId String @id @unique @default(uuid())
@ -22,7 +35,11 @@ model Version {
mod Mod? @relation(fields: [modId], references: [id], map: "mod_link", onDelete: Cascade, onUpdate: Cascade)
modVersion ModVersion?
platform Platform
platform Platform?
userPlatformRedistId String?
userPlatform UserPlatform? @relation(fields: [userPlatformRedistId], references: [redistId])
dropletManifest Json // Results from droplet
}
@ -32,11 +49,11 @@ model GameVersion {
redistDeps RedistVersion[]
launches GameVersionLaunch[]
launches LaunchOption[]
setup String @default("") // Command to setup game (dependencies and such)
setupArgs String @default("")
onlySetup Boolean @default(false)
setupCommand String @default("")
setupArgs String @default("")
onlySetup Boolean @default(false)
umuIdOverride String?
@ -45,11 +62,12 @@ model GameVersion {
hidden Boolean @default(false)
}
model GameVersionLaunch {
model LaunchOption {
launchId String @id @default(uuid())
versionId String
gameVersion GameVersion @relation(fields: [versionId], references: [versionId], onDelete: Cascade, onUpdate: Cascade)
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
@ -69,8 +87,10 @@ model RedistVersion {
versionId String @id
version Version @relation(fields: [versionId], references: [versionId], onDelete: Cascade, onUpdate: Cascade)
gameDependees GameVersion[]
dlcDependees DLCVersion[]
launches LaunchOption[]
gameDependees GameVersion[]
dlcDependees DLCVersion[]
}
model ModVersion {

View File

@ -79,7 +79,8 @@ model Redist {
library Library @relation(fields: [libraryId], references: [id], onDelete: Cascade, onUpdate: Cascade)
libraryPath String
versions Version[]
versions Version[]
platform UserPlatform?
@@unique([libraryId, libraryPath], name: "libraryKey")
}