From 899c3802def33171f5ec43d24fa8d5b4db998adf Mon Sep 17 00:00:00 2001 From: Rizky Date: Fri, 28 Jun 2024 00:40:04 +0700 Subject: [PATCH] fix prasi cache --- pkgs/api/_prasi.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/pkgs/api/_prasi.ts b/pkgs/api/_prasi.ts index d20ac51..38e3172 100644 --- a/pkgs/api/_prasi.ts +++ b/pkgs/api/_prasi.ts @@ -6,6 +6,7 @@ import mime from "mime"; const cache = { route: null as any, + comps: {} as Record, }; export const _ = { url: "/_prasi/**", @@ -89,15 +90,34 @@ export const _ = { }, comp: async () => { const comps = {} as Record; + + const pending = new Set(); if (req.params.ids) { for (const id of req.params.ids) { const comp = g.deploy.comps[id]; if (comp) { comps[id] = comp; + } else if (cache.comps[id]) { + comps[id] = cache.comps[id]; + } else { + pending.add(id); } } } + if (pending.size > 0) { + try { + const res = await fetch( + `https://prasi.avolut.com/prod/452e91b8-c474-4ed2-9c43-447ac8778aa8/_prasi/comp`, + { method: "POST", body: JSON.stringify({ ids: [...pending] }) } + ); + for (const [k, v] of Object.entries((await res.json()) as any)) { + cache.comps[k] = v; + comps[k] = v; + } + } catch (e) {} + } + return await responseCompressed(req, JSON.stringify(comps)); }, "load.json": async () => {