import apiClient from './index.js' import { apiEndpoints as E } from './endpoints.js' import { paginatedGet } from './paginate.js' import { apiCall } from './apiError.js' import { toApiBool } from './boolCodec.js' // Get student list export const getStudents = () => paginatedGet(apiClient, E.STUDENTS.LIST) /** * Map a frontend student record to the backend's StdtStudentWrite shape. * Spec: avatar / slider_icon are uploaded together with their mime_type * and file_name; if any of (file, mime_type) is missing, the icon is dropped. */ const buildPayload = (s) => { const payload = { student_name: s.student_name || '', enabled: toApiBool(s.enabled ?? true), grade: s.grade || '', age: parseInt(s.age) || 0, } if (s.avatar && s.avatar_mime_type) { payload.avatar_base64 = s.avatar payload.avatar_mime_type = s.avatar_mime_type payload.avatar_file_name = s.avatar_file_name || '' } if (s.slider_icon && s.slider_icon_mime_type) { payload.slider_icon_base64 = s.slider_icon payload.slider_icon_mime_type = s.slider_icon_mime_type payload.slider_icon_file_name = s.slider_icon_file_name || '' } return payload } // Create student export const createStudent = (data) => apiCall('POST', E.STUDENTS.CREATE, { data: buildPayload(data) }, 'Failed to create student') // Update student information export const updateStudent = (studentId, data) => apiCall( 'PATCH', E.STUDENTS.UPDATE(studentId), { data: buildPayload(data) }, 'Failed to update student', ) // Delete student export const deleteStudent = (studentId) => apiCall('DELETE', E.STUDENTS.DELETE(studentId), null, 'Failed to delete student')