fix route_cache

This commit is contained in:
Rizky 2024-07-02 08:12:00 +07:00
parent 7d760885ec
commit c73678a7b6
5 changed files with 65 additions and 37 deletions

View File

@ -0,0 +1,9 @@
import { apiContext } from "service-srv";
export const _ = {
url: "/local-files",
async api() {
const { req, res } = apiContext(this);
return "This is local-files.ts";
}
}

View File

@ -8,6 +8,7 @@ import { initFrontEnd } from "../ws/sync/code/parts/init/frontend";
import { gzipAsync } from "../ws/sync/entity/zlib"; import { gzipAsync } from "../ws/sync/entity/zlib";
import { ensureLib } from "../ws/sync/code/utlis/ensure-lib"; import { ensureLib } from "../ws/sync/code/utlis/ensure-lib";
import { ensureFiles } from "../ws/sync/code/utlis/ensure-files"; import { ensureFiles } from "../ws/sync/code/utlis/ensure-files";
import { g } from "utils/global";
export const _ = { export const _ = {
url: "/prod/:site_id/**", url: "/prod/:site_id/**",
@ -135,6 +136,11 @@ export const _ = {
}); });
} }
case "route": { case "route": {
if (!g.route_cache) g.route_cache = {};
if (g.route_cache[site_id]) {
return await responseCompressed(req, g.route_cache[site_id]);
}
const site = await _db.site.findFirst({ const site = await _db.site.findFirst({
where: { id: site_id }, where: { id: site_id },
select: { select: {
@ -180,16 +186,14 @@ export const _ = {
select: { url: true, id: true }, select: { url: true, id: true },
}); });
return await responseCompressed( g.route_cache[site_id] = JSON.stringify({
req, site: { ...site, api_url },
JSON.stringify({ urls,
site: { ...site, api_url }, layout: layout
urls, ? { id: layout.id, root: layout.content_tree }
layout: layout : undefined,
? { id: layout.id, root: layout.content_tree } });
: undefined, return await responseCompressed(req, g.route_cache[site_id]);
}) as any
);
} }
case "page": { case "page": {
const page_id = pathname.split("/").pop() as string; const page_id = pathname.split("/").pop() as string;

View File

@ -47,48 +47,53 @@ export const ensureFiles = async (path: string, id_site: string) => {
"ulimit -c 0; tailwindcss --watch -i ./app/css/global.css -o ./app/css/build.css --minify", "ulimit -c 0; tailwindcss --watch -i ./app/css/global.css -o ./app/css/build.css --minify",
}, },
dependencies: { dependencies: {
"@babel/runtime": "^7.24.6", "@floating-ui/react": "^0.26.12",
"@floating-ui/core": "^1.6.2", "@hookform/resolvers": "^3.3.4",
"@floating-ui/react": "^0.26.16",
"@noble/hashes": "^1.4.0",
"@paralleldrive/cuid2": "^2.2.2", "@paralleldrive/cuid2": "^2.2.2",
"@radix-ui/react-compose-refs": "^1.0.1", "@prisma/client": "^5.13.0",
"@radix-ui/react-dropdown-menu": "^2.0.6", "@radix-ui/react-dropdown-menu": "^2.1.1",
"@radix-ui/react-label": "^2.0.2", "@radix-ui/react-label": "^2.0.2",
"@radix-ui/react-navigation-menu": "^1.1.4", "@radix-ui/react-navigation-menu": "^1.2.0",
"@radix-ui/react-popover": "^1.0.7", "@radix-ui/react-popover": "^1.0.7",
"@radix-ui/react-slider": "^1.1.2", "@radix-ui/react-slider": "^1.1.2",
"@radix-ui/react-slot": "^1.0.2", "@radix-ui/react-slot": "^1.0.2",
"@radix-ui/react-switch": "^1.0.3", "@radix-ui/react-switch": "^1.1.0",
"@radix-ui/react-tabs": "^1.0.4", "@radix-ui/react-tabs": "^1.0.4",
"@types/file-saver": "^2.0.7", "@types/autosize": "^4.0.3",
"@types/lodash.capitalize": "^4.2.9", "@types/lodash.capitalize": "^4.2.9",
"@types/lodash.get": "^4.4.9", "@types/lodash.get": "^4.4.9",
"@types/react": "^18.3.2", "@types/react": "^18.2.65",
"@types/react-dom": "^18.3.0", "@types/uuid": "^9.0.8",
"@wojtekmaj/react-qr-svg": "^1.0.0",
"any-date-parser": "^1.5.4", "any-date-parser": "^1.5.4",
"chart.js": "^4.4.3", autosize: "^6.0.1",
"class-variance-authority": "^0.7.0", "class-variance-authority": "^0.7.0",
clsx: "^2.1.1", clsx: "^2.1.0",
"date-fns": "^3.3.1",
dayjs: "^1.11.11", dayjs: "^1.11.11",
"embla-carousel-react": "^8.1.1", "embla-carousel-react": "^8.0.2",
exceljs: "^4.4.0", jsqr: "^1.4.0",
"lodash.capitalize": "^4.2.1", "lodash.capitalize": "^4.2.1",
"lodash.get": "^4.4.2", "lodash.get": "^4.4.2",
"lucide-react": "^0.378.0", "lucide-react": "^0.314.0",
"next-themes": "^0.3.0", "next-themes": "^0.3.0",
prisma: "^5.13.0",
quill: "^2.0.2", quill: "^2.0.2",
"quill-delta": "^5.1.0", react: "^18.2.0",
react: "^18.3.1",
"react-arborist": "^3.4.0", "react-arborist": "^3.4.0",
"react-chartjs-2": "^5.2.0", "react-chartjs-2": "^5.2.0",
"react-data-grid": "^7.0.0-beta.44", "react-data-grid": "^7.0.0-beta.43",
"react-day-picker": "^8.10.1", "react-dom": "^18.2.0",
"react-resizable-panels": "^2.0.19", "react-hook-form": "^7.51.0",
"react-resizable-panels": "^2.0.11",
"react-webcam": "^7.2.0",
"read-excel-file": "^5.7.1",
sonner: "^1.4.41", sonner: "^1.4.41",
tabbable: "^6.2.0", "tailwind-merge": "^2.2.1",
"tailwind-merge": "^2.3.0", "tailwindcss-animate": "^1.0.7",
xlsx: "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz", uuid: "^9.0.1",
"xlsx": "npm:@e965/xlsx@^0.20.2-released.0",
"zod": "^3.22.4"
}, },
}), }),
{ mode: 777 } { mode: 777 }

View File

@ -1,6 +1,6 @@
import { g } from "utils/global"; import { g } from "utils/global";
import { apiContext } from "../server/api/api-ctx"; import { apiContext } from "../server/api/api-ctx";
import { execQuery } from "../utils/query"; import { DBArg, execQuery } from "../utils/query";
export const _ = { export const _ = {
url: "/_dbs/:action", url: "/_dbs/:action",
@ -8,7 +8,16 @@ export const _ = {
const { req, res } = apiContext(this); const { req, res } = apiContext(this);
try { try {
const result = await execQuery(req.params, g._db); const params = req.params as DBArg;
if (
params.table === "page" &&
["create", "update", "delete"].includes(params.action)
) {
g.route_cache = {};
}
const result = await execQuery(params, g._db);
res.send(result); res.send(result);
} catch (e: any) { } catch (e: any) {
res.sendStatus(500); res.sendStatus(500);

View File

@ -17,7 +17,7 @@ type SingleRoute = {
args: string[]; args: string[];
fn: (...arg: any[]) => Promise<any>; fn: (...arg: any[]) => Promise<any>;
path: string; path: string;
raw: any raw: any;
}; };
export const g = global as unknown as { export const g = global as unknown as {
@ -59,4 +59,5 @@ export const g = global as unknown as {
Y: typeof Y; Y: typeof Y;
syncronize: typeof syncronize; syncronize: typeof syncronize;
static_cache: any; static_cache: any;
route_cache: Record<string, any>;
}; };