/** * Educational API * API client for Educational Module endpoints * * Endpoints: * - getModules: Get all modules (with optional difficulty filter) * - getModuleById: Get a specific module by ID * - getModuleExercises: Get all exercises for a module * - getExerciseById: Get a specific exercise by ID */ import apiClient from '@/services/api/apiClient'; import type { Module, Exercise, DifficultyLevel } from '@/shared/types/educational.types'; /** * Get all modules * @param difficulty - Optional difficulty filter * @param classroomId - Optional classroom ID to filter modules assigned to a specific classroom * @returns Array of Module */ export const getModules = async ( difficulty?: DifficultyLevel, classroomId?: string, ): Promise => { const params: Record = {}; if (difficulty) { params.difficulty = difficulty; } if (classroomId) { params.classroomId = classroomId; } const { data } = await apiClient.get('/educational/modules', { params: Object.keys(params).length > 0 ? params : undefined, }); return data; }; /** * Get a specific module by ID * @param id - Module ID * @returns Module */ export const getModuleById = async (id: string): Promise => { const { data } = await apiClient.get(`/educational/modules/${id}`); return data; }; /** * Get all exercises for a module * @param moduleId - Module ID * @returns Array of Exercise */ export const getModuleExercises = async (moduleId: string): Promise => { const { data } = await apiClient.get(`/educational/modules/${moduleId}/exercises`); return data; }; /** * Get a specific exercise by ID * @param id - Exercise ID * @returns Exercise */ export const getExerciseById = async (id: string): Promise => { const { data } = await apiClient.get(`/educational/exercises/${id}`); return data; }; /** * Search modules by keyword * @param keyword - Search keyword * @returns Array of Module */ export const searchModules = async (keyword: string): Promise => { const { data } = await apiClient.get('/educational/modules/search', { params: { q: keyword }, }); return data; }; // Export all as educationalApi object export const educationalApi = { getModules, getModuleById, getModuleExercises, getExerciseById, searchModules, }; export default educationalApi;