From 972a94f5dc1a814467230539ee26c884fbed2f1f Mon Sep 17 00:00:00 2001 From: Julien Oculi Date: Thu, 11 Jul 2024 11:30:29 +0200 Subject: [PATCH] feat(api): :sparkles: add new api route for member card list --- routes/api/members/fetchAll.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 routes/api/members/fetchAll.ts diff --git a/routes/api/members/fetchAll.ts b/routes/api/members/fetchAll.ts new file mode 100644 index 0000000..c4e1af5 --- /dev/null +++ b/routes/api/members/fetchAll.ts @@ -0,0 +1,28 @@ +import { MemberCardProps } from ':components/MemberCard.tsx' +import { db } from ':src/db/mod.ts' +import { dbToMemberCardProps } from ':src/members/mod.ts' +import { SessionHandlers } from ':src/session/mod.ts' +import { respondApi, respondApiStream } from ':src/utils.ts' + +export const handler: SessionHandlers = { + GET(_req, ctx) { + try { + const memberList = dbToMemberCardProps(db) + + const params = ctx.url.searchParams + + const groupParam = params.get('group') + if (groupParam) { + const list = memberList.filter( + (member) => member.groups.includes(groupParam), + ) as AsyncIterableIterator + + return respondApiStream(list) + } + + return respondApiStream(memberList) + } catch (error) { + return respondApi('error', error) + } + }, +}