From 44854cc5fbbe7dc0db3581f67a2a1ba1dd8a262d Mon Sep 17 00:00:00 2001 From: Arik Chakma Date: Wed, 3 Sep 2025 15:57:17 +0600 Subject: [PATCH] fix: official roadmap json --- src/pages/[roadmapId].json.ts | 60 +++++---------------------------- src/queries/official-roadmap.ts | 1 + 2 files changed, 10 insertions(+), 51 deletions(-) diff --git a/src/pages/[roadmapId].json.ts b/src/pages/[roadmapId].json.ts index 87a9fb935..647628bfe 100644 --- a/src/pages/[roadmapId].json.ts +++ b/src/pages/[roadmapId].json.ts @@ -1,57 +1,9 @@ import type { APIRoute } from 'astro'; -import path from 'node:path'; -import fs from 'node:fs'; -import matter from 'gray-matter'; -import { fileURLToPath } from 'node:url'; -import type { OfficialRoadmapDocument } from '../queries/official-roadmap'; +import { officialRoadmapDetails } from '../queries/official-roadmap'; export const prerender = false; -// Get the project root directory -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); - -type RoadmapJson = { - _id: string; - title: string; - description: string; - slug: string; - nodes: { - type: 'topic' | 'subtopic' | 'paragraph'; - data: { label: string }; - }[]; - edges: unknown[]; - draft: boolean; - createdAt: string; - updatedAt: string; -}; - -export async function fetchRoadmapJson( - roadmapId: string, -): Promise { - const isDev = import.meta.env.DEV; - const baseUrl = new URL( - isDev ? 'http://localhost:8080' : 'https://roadmap.sh', - ); - baseUrl.pathname = isDev - ? `/v1-official-roadmap/${roadmapId}` - : `/api/v1-official-roadmap/${roadmapId}`; - - const response = await fetch(String(baseUrl)); - - if (!response.ok) { - throw new Error(`Failed to fetch roadmap json: ${response.statusText}`); - } - - const data = await response.json(); - if (data.error) { - throw new Error(`Failed to fetch roadmap json: ${data.error}`); - } - - return data; -} - -export const GET: APIRoute = async function ({ params, request, props }) { +export const GET: APIRoute = async function ({ params }) { const { roadmapId } = params; if (!roadmapId) { @@ -60,7 +12,13 @@ export const GET: APIRoute = async function ({ params, request, props }) { }); } - const roadmapJson = await fetchRoadmapJson(roadmapId); + const roadmapJson = await officialRoadmapDetails(roadmapId); + if (!roadmapJson) { + return new Response('Roadmap not found', { + status: 404, + }); + } + return new Response(JSON.stringify(roadmapJson), { status: 200, headers: { diff --git a/src/queries/official-roadmap.ts b/src/queries/official-roadmap.ts index 4ebb66a1d..6e8883814 100644 --- a/src/queries/official-roadmap.ts +++ b/src/queries/official-roadmap.ts @@ -105,6 +105,7 @@ export async function officialRoadmapDetails(roadmapSlug: string) { return roadmap; } catch (error) { if (FetchError.isFetchError(error) && error.status === 404) { + console.log('Roadmap not found', roadmapSlug); return null; }