import apiClient, { apiEndpoints } from './index.js' // Get student list export const getStudents = async () => { try { const response = await apiClient.get(apiEndpoints.STUDENTS.LIST) return response.data } catch (error) { throw new Error(error?.response?.data?.detail || error?.message || 'Failed to fetch students') } } // Update student information export const updateStudent = async (studentId, studentData) => { try { // Convert data format to match API requirements const apiData = { student_name: studentData.student_name || '', enabled: studentData.enabled ? 'Y' : 'N', grade: studentData.grade || '', age: parseInt(studentData.age) || 0, } // If avatar data is included, add avatar-related fields if (studentData.avatar && studentData.avatar_mime_type) { apiData.avatar_base64 = studentData.avatar apiData.avatar_mime_type = studentData.avatar_mime_type apiData.avatar_file_name = studentData.avatar_file_name || '' } console.log('Sending update request:', { studentId, url: apiEndpoints.STUDENTS.UPDATE(studentId), data: { ...apiData, avatar_base64: apiData.avatar_base64 ? '[base64 data]' : undefined } // Don't print full base64 }) const response = await apiClient.patch(apiEndpoints.STUDENTS.UPDATE(studentId), apiData) return response.data } catch (error) { console.error('API error details:', { status: error?.response?.status, statusText: error?.response?.statusText, data: error?.response?.data, headers: error?.response?.headers }) const errorMessage = error?.response?.data?.detail || error?.response?.data?.message || error?.response?.data?.error || `HTTP ${error?.response?.status}: ${error?.response?.statusText}` || error.message || 'Failed to update student' throw new Error(errorMessage) } } // Create student export const createStudent = async (studentData) => { try { // Convert data format to match API requirements const apiData = { student_name: studentData.student_name || '', enabled: studentData.enabled ? 'Y' : 'N', grade: studentData.grade || '', age: parseInt(studentData.age) || 0, } // If avatar data is included, add avatar-related fields if (studentData.avatar && studentData.avatar_mime_type) { apiData.avatar_base64 = studentData.avatar apiData.avatar_mime_type = studentData.avatar_mime_type apiData.avatar_file_name = studentData.avatar_file_name || '' } console.log('Sending create request:', { url: apiEndpoints.STUDENTS.CREATE, data: { ...apiData, avatar_base64: apiData.avatar_base64 ? '[base64 data]' : undefined } }) const response = await apiClient.post(apiEndpoints.STUDENTS.CREATE, apiData) return response.data } catch (error) { console.error('API error details:', { status: error?.response?.status, statusText: error?.response?.statusText, data: error?.response?.data, headers: error?.response?.headers }) const errorMessage = error?.response?.data?.detail || error?.response?.data?.message || error?.response?.data?.error || `HTTP ${error?.response?.status}: ${error?.response?.statusText}` || error.message || 'Failed to create student' throw new Error(errorMessage) } } // Delete student export const deleteStudent = async (studentId) => { try { console.log('Sending delete request:', { studentId, url: apiEndpoints.STUDENTS.DELETE(studentId) }) const response = await apiClient.delete(apiEndpoints.STUDENTS.DELETE(studentId)) return response.data } catch (error) { console.error('API error details:', { status: error?.response?.status, statusText: error?.response?.statusText, data: error?.response?.data, headers: error?.response?.headers }) const errorMessage = error?.response?.data?.detail || error?.response?.data?.message || error?.response?.data?.error || `HTTP ${error?.response?.status}: ${error?.response?.statusText}` || error.message || 'Failed to delete student' throw new Error(errorMessage) } }