File size: 1,365 Bytes
f91a684 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | /**
* cProgrammingClient.ts
* ---------------------
* Fetches C Programming topic data from the Go backend.
*/
export interface CSectionPreview {
id: string;
section: string;
section_title: string;
has_content: boolean;
}
export interface CChapterTopic {
id: string;
chapter_no: number;
chapter_name: string;
subtitle: string;
level: string;
section_count: number;
content_count: number;
sections: CSectionPreview[];
}
export interface CSection extends CSectionPreview {
chapter?: number;
chapter_no: number;
chapter_name?: string;
title?: string;
content: string;
[key: string]: any;
}
export interface CChapterContent extends CChapterTopic {
sections: CSection[];
}
export async function fetchCTopics(): Promise<CChapterTopic[]> {
const res = await fetch('/api/c/topics', {
method: 'GET',
headers: { 'Content-Type': 'application/json' },
});
if (!res.ok) throw new Error(`C topics fetch failed: ${res.status}`);
const data = await res.json();
return data.topics ?? [];
}
export async function fetchCTopicContent(chapterNo: number): Promise<CChapterContent> {
const res = await fetch(`/api/c/topics/${chapterNo}`, {
method: 'GET',
headers: { 'Content-Type': 'application/json' },
});
if (!res.ok) throw new Error(`C topic content fetch failed: ${res.status}`);
return res.json();
}
|