fix: official roadmap json

This commit is contained in:
Arik Chakma
2025-09-03 11:02:46 +01:00
committed by Kamran Ahmed
parent b1e60f1614
commit 44854cc5fb
2 changed files with 10 additions and 51 deletions
+9 -51
View File
@@ -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<OfficialRoadmapDocument> {
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: {
+1
View File
@@ -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;
}