diff --git a/lib/server/dbHelpers/storyQuerier.ts b/lib/server/dbHelpers/storyQuerier.ts new file mode 100644 index 0000000..5cb07e5 --- /dev/null +++ b/lib/server/dbHelpers/storyQuerier.ts @@ -0,0 +1,23 @@ +import type { H3Event, EventHandlerRequest } from "h3"; +import { Challenge } from "~/models/challenges/gen"; +import { Story } from "~/models/stories"; +export default async function (ev: H3Event) { + const id = parseInt(getRouterParam(ev, "id") as string); + const chapterIndex = ev.context.chapterIndex; + if (isNaN(id) || isNaN(chapterIndex)) + throw createError({ + statusCode: 404, + message: "Not found.", + }); + const story = await Story.findById(id) + .populate("author", "username profile blocked") + .populate("chapters.bands") + .populate({ + path: "ficmas", + populate: { path: "wisher", select: "_id username" }, + }) + .populate({ path: "challenge", model: Challenge }) + .exec(); + if (!story) throw createError({ statusCode: 404, message: "Not found." }); + return story; +}