25 lines
980 B
TypeScript
25 lines
980 B
TypeScript
import { error, json } from '@sveltejs/kit';
|
|
import { requireApiKey } from '#lib/server/library/auth';
|
|
import { libraryDatabase } from '#lib/server/library/database';
|
|
import { readBody } from '#lib/server/library/input';
|
|
import { deleteGame, isIgdbId, saveGame } from '#lib/server/library/games';
|
|
import type { RequestHandler } from './$types';
|
|
|
|
function checkedId(igdbId: string): string {
|
|
if (!isIgdbId(igdbId)) error(400, `${igdbId} is not an IGDB ID`);
|
|
return igdbId;
|
|
}
|
|
|
|
export const PUT: RequestHandler = async ({ params, request }) => {
|
|
requireApiKey(request);
|
|
const igdbId = checkedId(params.igdbId);
|
|
return json(await saveGame(await libraryDatabase(), igdbId, await readBody(request)));
|
|
};
|
|
|
|
export const DELETE: RequestHandler = async ({ params, request }) => {
|
|
requireApiKey(request);
|
|
const igdbId = checkedId(params.igdbId);
|
|
if (!deleteGame(await libraryDatabase(), igdbId)) error(404, `${igdbId} is not listed`);
|
|
return new Response(null, { status: 204 });
|
|
};
|