From 8070e8c55567f008e10a5c15f4f542542f9ebe2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=98=99=E2=97=A6=20The=20Tablet=20=E2=9D=80=20GamerGirla?= =?UTF-8?q?ndCo=20=E2=97=A6=E2=9D=A7?= Date: Tue, 3 Oct 2023 00:48:41 -0400 Subject: [PATCH] feat(api): add endpoints for retrieving a band's info and its associated stories --- server/api/bands/[id]/index.get.ts | 8 ++++++++ server/api/bands/[id]/stories.get.ts | 28 ++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 server/api/bands/[id]/index.get.ts create mode 100644 server/api/bands/[id]/stories.get.ts diff --git a/server/api/bands/[id]/index.get.ts b/server/api/bands/[id]/index.get.ts new file mode 100644 index 0000000..951f985 --- /dev/null +++ b/server/api/bands/[id]/index.get.ts @@ -0,0 +1,8 @@ +import { Band } from "~/models/band"; + +export default eventHandler(async (ev) => { + const id = parseInt(getRouterParam(ev, "id") as string); + const band = await Band.findById(id).exec(); + + return band; +}); diff --git a/server/api/bands/[id]/stories.get.ts b/server/api/bands/[id]/stories.get.ts new file mode 100644 index 0000000..6c64b59 --- /dev/null +++ b/server/api/bands/[id]/stories.get.ts @@ -0,0 +1,28 @@ +import listQuerier from "~/lib/server/dbHelpers/listQuerier"; +import { Band } from "~/models/band"; +import { Story } from "~/models/stories"; + +export default eventHandler(async (event) => { + const params = getRouterParams(event); + const query = getQuery(event); + let band = await Band.findById(params.id); + if (!band) { + throw createError({ statusCode: 404, message: "not found." }); + } + let skipAmt = 20 * (parseInt((query.page as string) || "1") - 1) - 1; + if (skipAmt < 0) skipAmt = 0; + let stories = await listQuerier( + { + "chapters.bands": { + $in: [parseInt(params["id"])], + }, + }, + event.context, + ); /* */ + console.log(skipAmt); + return { + ...band.toObject(), + stories: stories /* .slice(skipAmt, skipAmt + 20 + 1) */, + total: stories.length, + }; +});