From 8c98a8a948e7464445900c6b1fa36934098611f6 Mon Sep 17 00:00:00 2001 From: Matteo Tagliatti Date: Fri, 17 Nov 2023 15:47:47 +0100 Subject: [PATCH] add books api --- src/routes/api/books/+server.ts | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/routes/api/books/+server.ts diff --git a/src/routes/api/books/+server.ts b/src/routes/api/books/+server.ts new file mode 100644 index 0000000..20f1d5d --- /dev/null +++ b/src/routes/api/books/+server.ts @@ -0,0 +1,38 @@ +import { error } from "@sveltejs/kit"; +import type { RequestHandler } from "./$types"; + +export const GET: RequestHandler = async ({ url, locals: { supabase } }) => { + const username = String(url.searchParams.get("username")); + const status = String(url.searchParams.get("status")); + const limit = Number(url.searchParams.get("limit") || 10); + + if (!username) { + throw error(400, "username is required"); + } + + if (!status) { + throw error(400, "status is required"); + } + + const { data: user, error: user_error } = await supabase + .from("users") + .select() + .eq("username", username) + .single(); + + if (user_error) { + throw error(404, "User not found"); + } + + const { data: books, error: books_error } = await supabase + .from("books") + .select() + .eq("owner", user.id) + .eq("status", status) + .order("finished", { ascending: false }) + .limit(limit); + + if (books_error) throw error; + + return new Response(JSON.stringify(books)); +};