From ba84fbdcf37d5a1565122f328e44efddacea0025 Mon Sep 17 00:00:00 2001 From: Sean Morley Date: Sat, 27 Apr 2024 17:28:31 +0000 Subject: [PATCH] Add GET request handler for retrieving an adventure by ID --- src/routes/api/adventure/+server.ts | 44 +++++++++++++++++++++++++++++ src/routes/log/+page.svelte | 4 --- 2 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 src/routes/api/adventure/+server.ts diff --git a/src/routes/api/adventure/+server.ts b/src/routes/api/adventure/+server.ts new file mode 100644 index 0000000..18c9262 --- /dev/null +++ b/src/routes/api/adventure/+server.ts @@ -0,0 +1,44 @@ +import { db } from "$lib/db/db.server"; +import { adventureTable } from "$lib/db/schema"; +import { json, type RequestEvent, type RequestHandler } from "@sveltejs/kit"; +import { and, eq } from "drizzle-orm"; + +/** + * Handles the GET request for retrieving an adventure by ID. + * @param {Request} request - The request object. + * @param {Response} response - The response object. + * @returns {Promise} - A promise that resolves when the request is handled. + */ +export const GET: RequestHandler = async ({ url, locals }) => { + const id = url.searchParams.get("id"); + const user = locals.user; + + if (!user) { + return json({ error: "Unauthorized" }, { status: 401 }); + } + + if (!id) { + return json({ error: "Missing adventure ID" }, { status: 400 }); + } + + const adventure = await db + .select() + .from(adventureTable) + .where( + and( + eq(adventureTable.id, Number(id)), // Convert id to number + eq(adventureTable.userId, user.id) + ) + ) + .limit(1) + .execute(); + + if (adventure.length === 0) { + return json({ error: "Adventure not found" }, { status: 404 }); + } + + // console.log("GET /api/adventure?id=", id); + // console.log("User:", user); + + return json({ adventure }, { status: 200 }); +}; diff --git a/src/routes/log/+page.svelte b/src/routes/log/+page.svelte index 071b5eb..4c26a6a 100644 --- a/src/routes/log/+page.svelte +++ b/src/routes/log/+page.svelte @@ -17,10 +17,6 @@ let newName = ""; let newLocation = ""; - // let editId: number = NaN; - // let editName: string = ""; - // let editLocation: string = ""; - // let editdate: string = ""; let adventureToEdit: Adventure | undefined; let isShowingToast: boolean = false;