diff --git a/src/pages/[roadmapId].json.ts b/src/pages/[roadmapId].json.ts index 56a9cc507..5ff080fba 100644 --- a/src/pages/[roadmapId].json.ts +++ b/src/pages/[roadmapId].json.ts @@ -1,32 +1,36 @@ import type { APIRoute } from 'astro'; -export const prerender = true; - -export async function getStaticPaths() { - const roadmapJsons = import.meta.glob('/src/data/roadmaps/**/*.json', { - eager: true, - }); - - return Object.keys(roadmapJsons).map((filePath) => { - const roadmapId = filePath.split('/').pop()?.replace('.json', ''); - const roadmapJson = roadmapJsons[filePath] as Record; - - return { - params: { - roadmapId, - }, - props: { - roadmapJson: roadmapJson?.default, - }, - }; - }); -} +export const prerender = false; export const GET: APIRoute = async function ({ params, request, props }) { - return new Response(JSON.stringify(props.roadmapJson), { - status: 200, - headers: { - 'Content-Type': 'application/json', + const roadmapId = params.roadmapId; + + const roadmapUrl = `${import.meta.env.PUBLIC_API_URL}/v1-official-roadmap/${roadmapId}`; + + const res = await fetch(roadmapUrl); + const roadmapJson = await res.json(); + + if (res.status !== 200) { + return new Response( + JSON.stringify({ + error: roadmapJson.error, + }), + { + status: 500, + }, + ); + } + + return new Response( + JSON.stringify({ + nodes: roadmapJson?.nodes, + edges: roadmapJson?.edges, + }), + { + status: 200, + headers: { + 'Content-Type': 'application/json', + }, }, - }); + ); };