API optimisations (#343)

* feat: api optimisation

* feat: emulator rename
This commit is contained in:
DecDuck
2026-02-06 23:12:03 +11:00
committed by GitHub
parent 276f4f6389
commit 9b0f9994f6
20 changed files with 246 additions and 134 deletions
@@ -0,0 +1,31 @@
/*
Warnings:
- The values [Executor,Redist] on the enum `GameType` will be removed. If these variants are still used in the database, this will fail.
*/
-- AlterEnum
BEGIN;
CREATE TYPE "GameType_new" AS ENUM ('Game', 'Emulator', 'Dependency');
ALTER TABLE "Game" ALTER COLUMN "type" DROP DEFAULT;
ALTER TABLE "Game" ALTER COLUMN "type" TYPE "GameType_new" USING ("type"::text::"GameType_new");
ALTER TYPE "GameType" RENAME TO "GameType_old";
ALTER TYPE "GameType_new" RENAME TO "GameType";
DROP TYPE "GameType_old";
ALTER TABLE "Game" ALTER COLUMN "type" SET DEFAULT 'Game';
COMMIT;
-- DropIndex
DROP INDEX "Game_mName_idx";
-- DropIndex
DROP INDEX "GameTag_name_idx";
-- AlterTable
ALTER TABLE "LaunchConfiguration" ADD COLUMN "umuStoreOverride" TEXT;
-- CreateIndex
CREATE INDEX "Game_mName_idx" ON "Game" USING GIST ("mName" gist_trgm_ops(siglen=32));
-- CreateIndex
CREATE INDEX "GameTag_name_idx" ON "GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
@@ -0,0 +1,30 @@
/*
Warnings:
- You are about to drop the column `executorId` on the `LaunchConfiguration` table. All the data in the column will be lost.
- You are about to drop the column `executorSuggestions` on the `LaunchConfiguration` table. All the data in the column will be lost.
*/
-- DropForeignKey
ALTER TABLE "LaunchConfiguration" DROP CONSTRAINT "LaunchConfiguration_executorId_fkey";
-- DropIndex
DROP INDEX "Game_mName_idx";
-- DropIndex
DROP INDEX "GameTag_name_idx";
-- AlterTable
ALTER TABLE "LaunchConfiguration" DROP COLUMN "executorId",
DROP COLUMN "executorSuggestions",
ADD COLUMN "emulatorId" TEXT,
ADD COLUMN "emulatorSuggestions" TEXT[];
-- CreateIndex
CREATE INDEX "Game_mName_idx" ON "Game" USING GIST ("mName" gist_trgm_ops(siglen=32));
-- CreateIndex
CREATE INDEX "GameTag_name_idx" ON "GameTag" USING GIST ("name" gist_trgm_ops(siglen=32));
-- AddForeignKey
ALTER TABLE "LaunchConfiguration" ADD CONSTRAINT "LaunchConfiguration_emulatorId_fkey" FOREIGN KEY ("emulatorId") REFERENCES "LaunchConfiguration"("launchId") ON DELETE SET NULL ON UPDATE CASCADE;
+8 -7
View File
@@ -10,8 +10,8 @@ enum MetadataSource {
enum GameType {
Game
Executor
Redist
Emulator
Dependency
}
model Game {
@@ -149,16 +149,17 @@ model LaunchConfiguration {
platform Platform
// For emulation targets
executorId String?
executor LaunchConfiguration? @relation(fields: [executorId], references: [launchId], name: "executor")
executorSuggestions String[]
emulatorId String?
emulator LaunchConfiguration? @relation(fields: [emulatorId], references: [launchId], name: "emulator")
emulatorSuggestions String[]
umuIdOverride String?
umuIdOverride String?
umuStoreOverride String?
versionId String
gameVersion GameVersion @relation(fields: [versionId], references: [versionId], onDelete: Cascade, onUpdate: Cascade)
executions LaunchConfiguration[] @relation("executor")
emulations LaunchConfiguration[] @relation("emulator")
}
// A save slot for a game