import { apiFetch } from './client' export interface Batch { id: string name: string instructor_id: string class_code: string } export interface Topic { id: string batch_id: string name: string is_unlocked: boolean order_index: number question_count: number } export async function getMyBatch(): Promise { const res = await apiFetch('/api/batches/mine') if (!res.ok) throw new Error('No batch found') return res.json() } export async function createBatch(name: string): Promise { const res = await apiFetch('/api/batches', { method: 'POST', body: JSON.stringify({ name }), }) if (!res.ok) { const err = await res.json() throw new Error(err.detail ?? 'Failed to create batch') } return res.json() } export async function getTopics(batch_id: string): Promise { const res = await apiFetch(`/api/topics?batch_id=${batch_id}`) if (!res.ok) throw new Error('Failed to load topics') return res.json() } export async function createTopic(batch_id: string, name: string): Promise { const res = await apiFetch('/api/topics', { method: 'POST', body: JSON.stringify({ batch_id, name }), }) if (!res.ok) { const err = await res.json() throw new Error(err.detail ?? 'Failed to create topic') } return res.json() } export async function setTopicUnlock(topic_id: string, is_unlocked: boolean): Promise { const res = await apiFetch(`/api/topics/${topic_id}`, { method: 'PATCH', body: JSON.stringify({ is_unlocked }), }) if (!res.ok) throw new Error('Failed to update topic') return res.json() }