![]()
diff --git a/prisma/migrations/20250508224553_cleanup_old_objects/migration.sql b/prisma/migrations/20250508224553_cleanup_old_objects/migration.sql
new file mode 100644
index 0000000..7d6dfb8
--- /dev/null
+++ b/prisma/migrations/20250508224553_cleanup_old_objects/migration.sql
@@ -0,0 +1,10 @@
+
+-- Rename game table columns
+ALTER TABLE "Game" RENAME COLUMN "mIconId" TO "mIconObjectId";
+ALTER TABLE "Game" RENAME COLUMN "mBannerId" TO "mBannerObjectId";
+ALTER TABLE "Game" RENAME COLUMN "mCoverId" TO "mCoverObjectId";
+ALTER TABLE "Game" RENAME COLUMN "mImageCarousel" TO "mImageCarouselObjectIds";
+ALTER TABLE "Game" RENAME COLUMN "mImageLibrary" TO "mImageLibraryObjectIds";
+
+-- Rename saveslot table columns
+ALTER TABLE "SaveSlot" RENAME COLUMN "history" TO "historyObjectIds";
diff --git a/prisma/models/content.prisma b/prisma/models/content.prisma
index c321c56..969cbfb 100644
--- a/prisma/models/content.prisma
+++ b/prisma/models/content.prisma
@@ -24,11 +24,11 @@ model Game {
mReviewCount Int
mReviewRating Float // 0 to 1
- mIconId String // linked to objects in s3
- mBannerId String // linked to objects in s3
- mCoverId String
- mImageCarousel String[] // linked to below array
- mImageLibrary String[] // linked to objects in s3
+ mIconObjectId String // linked to objects in s3
+ mBannerObjectId String // linked to objects in s3
+ mCoverObjectId String
+ mImageCarouselObjectIds String[] // linked to below array
+ mImageLibraryObjectIds String[] // linked to objects in s3
versions GameVersion[]
libraryBasePath String @unique // Base dir for all the game versions
@@ -80,7 +80,7 @@ model SaveSlot {
lastUsedClientId String?
lastUsedClient Client? @relation(fields: [lastUsedClientId], references: [id])
- history String[] // list of objects
+ historyObjectIds String[] // list of objects
historyChecksums String[] // list of hashes
@@id([gameId, userId, index], name: "id")
diff --git a/server/api/v1/admin/game/image/index.delete.ts b/server/api/v1/admin/game/image/index.delete.ts
index 2751d31..3558584 100644
--- a/server/api/v1/admin/game/image/index.delete.ts
+++ b/server/api/v1/admin/game/image/index.delete.ts
@@ -21,27 +21,27 @@ export default defineEventHandler(async (h3) => {
id: gameId,
},
select: {
- mBannerId: true,
- mImageLibrary: true,
- mCoverId: true,
+ mBannerObjectId: true,
+ mImageLibraryObjectIds: true,
+ mCoverObjectId: true,
},
});
if (!game)
throw createError({ statusCode: 400, statusMessage: "Invalid game ID" });
- const imageIndex = game.mImageLibrary.findIndex((e) => e == imageId);
+ const imageIndex = game.mImageLibraryObjectIds.findIndex((e) => e == imageId);
if (imageIndex == -1)
throw createError({ statusCode: 400, statusMessage: "Image not found" });
- game.mImageLibrary.splice(imageIndex, 1);
+ game.mImageLibraryObjectIds.splice(imageIndex, 1);
await objectHandler.deleteAsSystem(imageId);
- if (game.mBannerId === imageId) {
- game.mBannerId = game.mImageLibrary[0];
+ if (game.mBannerObjectId === imageId) {
+ game.mBannerObjectId = game.mImageLibraryObjectIds[0];
}
- if (game.mCoverId === imageId) {
- game.mCoverId = game.mImageLibrary[0];
+ if (game.mCoverObjectId === imageId) {
+ game.mCoverObjectId = game.mImageLibraryObjectIds[0];
}
const result = await prisma.game.update({
@@ -49,14 +49,14 @@ export default defineEventHandler(async (h3) => {
id: gameId,
},
data: {
- mBannerId: game.mBannerId,
- mImageLibrary: game.mImageLibrary,
- mCoverId: game.mCoverId,
+ mBannerObjectId: game.mBannerObjectId,
+ mImageLibraryObjectIds: game.mImageLibraryObjectIds,
+ mCoverObjectId: game.mCoverObjectId,
},
select: {
- mBannerId: true,
- mImageLibrary: true,
- mCoverId: true,
+ mBannerObjectId: true,
+ mImageLibraryObjectIds: true,
+ mCoverObjectId: true,
},
});
diff --git a/server/api/v1/admin/game/image/index.post.ts b/server/api/v1/admin/game/image/index.post.ts
index fb43241..7ff453d 100644
--- a/server/api/v1/admin/game/image/index.post.ts
+++ b/server/api/v1/admin/game/image/index.post.ts
@@ -47,7 +47,7 @@ export default defineEventHandler(async (h3) => {
id: gameId,
},
data: {
- mImageLibrary: {
+ mImageLibraryObjectIds: {
push: id,
},
},
diff --git a/server/api/v1/admin/game/metadata.post.ts b/server/api/v1/admin/game/metadata.post.ts
index aab26f2..59b7dd2 100644
--- a/server/api/v1/admin/game/metadata.post.ts
+++ b/server/api/v1/admin/game/metadata.post.ts
@@ -42,7 +42,7 @@ export default defineEventHandler(async (h3) => {
id: gameId,
},
data: {
- mIconId: id,
+ mIconObjectId: id,
mName: name,
mShortDescription: description,
},
diff --git a/server/api/v1/store/recent.get.ts b/server/api/v1/store/recent.get.ts
index be137f0..3d11231 100644
--- a/server/api/v1/store/recent.get.ts
+++ b/server/api/v1/store/recent.get.ts
@@ -10,8 +10,8 @@ export default defineEventHandler(async (h3) => {
id: true,
mName: true,
mShortDescription: true,
- mCoverId: true,
- mBannerId: true,
+ mCoverObjectId: true,
+ mBannerObjectId: true,
mDevelopers: {
select: {
id: true,
diff --git a/server/internal/library/index.ts b/server/internal/library/index.ts
index a9f9fe5..11de0a1 100644
--- a/server/internal/library/index.ts
+++ b/server/internal/library/index.ts
@@ -73,7 +73,7 @@ class LibraryManager {
metadataSource: true,
mDevelopers: true,
mPublishers: true,
- mIconId: true,
+ mIconObjectId: true,
libraryBasePath: true,
},
orderBy: {
diff --git a/server/internal/metadata/index.ts b/server/internal/metadata/index.ts
index b16edbe..a4f129c 100644
--- a/server/internal/metadata/index.ts
+++ b/server/internal/metadata/index.ts
@@ -174,10 +174,10 @@ export class MetadataHandler {
mReviewRating: metadata.reviewRating,
mReleased: metadata.released,
- mIconId: metadata.icon,
- mBannerId: metadata.bannerId,
- mCoverId: metadata.coverId,
- mImageLibrary: metadata.images,
+ mIconObjectId: metadata.icon,
+ mBannerObjectId: metadata.bannerId,
+ mCoverObjectId: metadata.coverId,
+ mImageLibraryObjectIds: metadata.images,
libraryBasePath,
},
diff --git a/server/internal/saves/index.ts b/server/internal/saves/index.ts
index 69e4d11..7b76f90 100644
--- a/server/internal/saves/index.ts
+++ b/server/internal/saves/index.ts
@@ -77,7 +77,7 @@ class SaveManager {
},
},
data: {
- history: {
+ historyObjectIds: {
push: newSaveObjectId,
},
historyChecksums: {
@@ -88,12 +88,12 @@ class SaveManager {
});
const historyLimit = await applicationSettings.get("saveSlotHistoryLimit");
- if (newSave.history.length > historyLimit) {
+ if (newSave.historyObjectIds.length > historyLimit) {
// Delete previous
- const safeFromIndex = newSave.history.length - historyLimit;
+ const safeFromIndex = newSave.historyObjectIds.length - historyLimit;
- const toDelete = newSave.history.slice(0, safeFromIndex);
- const toKeepObjects = newSave.history.slice(safeFromIndex);
+ const toDelete = newSave.historyObjectIds.slice(0, safeFromIndex);
+ const toKeepObjects = newSave.historyObjectIds.slice(safeFromIndex);
const toKeepHashes = newSave.historyChecksums.slice(safeFromIndex);
// Delete objects first, so if we error out, we don't lose track of objects in backend
@@ -110,7 +110,7 @@ class SaveManager {
},
},
data: {
- history: toKeepObjects,
+ historyObjectIds: toKeepObjects,
historyChecksums: toKeepHashes,
},
});