mirror of
https://github.com/Drop-OSS/drop.git
synced 2025-11-13 00:02:37 +10:00
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import { defineClientEventHandler } from "~/server/internal/clients/event-handler";
|
|
import prisma from "~/server/internal/db/database";
|
|
import { DropManifest } from "~/server/internal/downloads/manifest";
|
|
|
|
export default defineClientEventHandler(async (h3, {}) => {
|
|
const query = getQuery(h3);
|
|
const id = query.id?.toString();
|
|
if (!id)
|
|
throw createError({
|
|
statusCode: 400,
|
|
statusMessage: "No ID in request query",
|
|
});
|
|
|
|
const versions = await prisma.gameVersion.findMany({
|
|
where: {
|
|
gameId: id,
|
|
},
|
|
orderBy: {
|
|
versionIndex: "desc", // Latest one first
|
|
},
|
|
});
|
|
|
|
const mappedVersions = versions
|
|
.map((version) => {
|
|
if (!version.dropletManifest) return undefined;
|
|
const manifest = JSON.parse(
|
|
version.dropletManifest.toString()
|
|
) as DropManifest;
|
|
|
|
/*
|
|
TODO: size estimates
|
|
They are a little complicated because of delta versions
|
|
Manifests need to be generated with the manifest generator and then
|
|
added up. I'm a little busy right now to implement this, though.
|
|
*/
|
|
|
|
const newVersion = { ...version, dropletManifest: undefined };
|
|
delete newVersion.dropletManifest;
|
|
return {
|
|
...newVersion,
|
|
};
|
|
})
|
|
.filter((e) => e);
|
|
|
|
return mappedVersions;
|
|
});
|