From aafdc9b04c44410f3da9bc89a8a974107bc71bbf Mon Sep 17 00:00:00 2001 From: regalijan Date: Thu, 19 Oct 2023 16:49:16 -0400 Subject: [PATCH] Create fetch single queue item endpoint --- functions/api/mod-queue/[type]/[id].ts | 43 ++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 functions/api/mod-queue/[type]/[id].ts diff --git a/functions/api/mod-queue/[type]/[id].ts b/functions/api/mod-queue/[type]/[id].ts new file mode 100644 index 0000000..aba6ab6 --- /dev/null +++ b/functions/api/mod-queue/[type]/[id].ts @@ -0,0 +1,43 @@ +export async function onRequestGet(context: RequestContext) { + const types: { [k: string]: { permissions: number[]; prefix: string } } = { + appeal: { + permissions: [1 << 0, 1 << 1], + prefix: `appeal_`, + }, + gma: { + permissions: [1 << 5], + prefix: `gameappeal_`, + }, + report: { + permissions: [1 << 5], + prefix: `report_`, + }, + }; + + const type = context.params.type as string; + const itemId = context.params.id as string; + + if ( + !types[type]?.permissions.find( + (p) => context.data.current_user.permissions & p + ) + ) + return new Response('{"error":"You cannot use this filter"}', { + headers: { + "content-type": "application/json", + }, + status: 403, + }); + + let item = await context.env.DATA.get(`${types[type].prefix}${itemId}`); + + if (!item) + item = await context.env.DATA.get(`closed${types[type].prefix}${itemId}`); + + return new Response(item ? item : '{"error":"Not found"}', { + headers: { + "content-type": "application/json", + }, + status: item ? 200 : 404, + }); +}