Compare commits

...

2 Commits

Author SHA1 Message Date
Arik Chakma
20cba6762f fix: remove log 2025-09-03 15:57:36 +06:00
Arik Chakma
f8d73229aa fix: official roadmap json 2025-09-03 15:57:17 +06:00

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: {