1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-08-05 13:15:18 +02:00

Add endpoint for getting activity types

This commit is contained in:
Sean Morley 2024-05-30 23:30:34 +00:00
parent 762096ae04
commit 870d8234b8
2 changed files with 59 additions and 0 deletions

View file

@ -0,0 +1,52 @@
import { addActivityType } from "$lib";
import { db } from "$lib/db/db.server";
import { adventureTable } from "$lib/db/schema";
import type { Adventure } from "$lib/utils/types";
import { json, type RequestEvent, type RequestHandler } from "@sveltejs/kit";
import { and, eq } from "drizzle-orm";
/**
* Handles the GET request for retrieving activity types based on the provided type parameter.
* @param {Request} request - The request object containing the URL and locals.
* @returns {Promise<Response>} - A promise that resolves to the JSON response containing the activity types.
*/
export const GET: RequestHandler = async ({ url, locals }) => {
const type = url.searchParams.get("type");
const user = locals.user;
if (!user) {
return json({ error: "Unauthorized" }, { status: 401 });
}
if (!type) {
return json({ error: "Missing adventure ID" }, { status: 400 });
}
let types = await db
.select({ activityTypes: adventureTable.activityTypes })
.from(adventureTable)
.where(
and(eq(adventureTable.userId, user.id), eq(adventureTable.type, type))
)
.execute();
types.forEach((type) => {
console.log(type.activityTypes);
});
if (types.length === 0) {
return json({ error: "Types not found" }, { status: 404 });
}
// console.log(types);
let array: any[] = [];
types.forEach((type) => {
const parsedActivityTypes = JSON.parse(type.activityTypes as string);
if (parsedActivityTypes && parsedActivityTypes.length > 0) {
array.push(...parsedActivityTypes); // Spread the parsed array into the main array
}
});
return json({ types: array }, { status: 200 });
};

View file

@ -220,6 +220,13 @@
<h1 class="text-center">My Adventure Ideas</h1>
</article>
</div>
<div class="flex justify-center items-center w-full mt-4 mb-4">
Filter by: Activity Type &nbsp;
<select class="select select-bordered w-full max-w-xs">
<option>Han Solo</option>
<option>Greedo</option>
</select>
</div>
{/if}
{#if isLoadingIdeas && isLoadingTrips}