import { collections } from "$lib/server/database"; import { ObjectId } from "mongodb"; import type { LayoutServerLoad } from "./$types"; import type { Report } from "$lib/types/Report"; export const load = (async ({ locals, parent }) => { const { settings } = await parent(); // find assistants matching the settings assistants const assistants = await collections.assistants .find({ _id: { $in: settings.assistants.map((el) => new ObjectId(el)) }, }) .toArray(); let reportsByUser: string[] = []; const createdBy = locals.user?._id ?? locals.sessionId; if (createdBy) { const reports = await collections.reports .find>({ createdBy }, { projection: { _id: 0, assistantId: 1 } }) .toArray(); reportsByUser = reports.map((r) => r.assistantId.toString()); } return { assistants: assistants.map((el) => ({ ...el, _id: el._id.toString(), createdById: undefined, createdByMe: el.createdById.toString() === (locals.user?._id ?? locals.sessionId).toString(), reported: reportsByUser.includes(el._id.toString()), })), }; }) satisfies LayoutServerLoad;