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, + }); +}