// src/services/api.js import axios from 'axios'; const createApiClient = () => { const client = axios.create({ baseURL: process.env.REACT_APP_API_URL }); const authHeader = (token) => ({ Authorization: `Bearer ${token}` }); return { // Auth login: (credentials) => client.post('/api/v1/login', credentials), // Items items: { getAll: (token) => client.get('/api/v1/items', { headers: authHeader(token) }), getOne: (token, id) => client.get(`/api/v1/items/${id}`, { headers: authHeader(token) }), create: (token, itemData) => client.post('/api/v1/items', itemData, { headers: authHeader(token) }), update: (token, id, itemData) => client.put(`/api/v1/items/${id}`, itemData, { headers: authHeader(token) }), delete: (token, id) => client.delete(`/api/v1/items/${id}`, { headers: authHeader(token) }), uploadImage: (token, id, formData) => client.post(`/api/v1/items/${id}/upload`, formData, { headers: { ...authHeader(token), 'Content-Type': 'multipart/form-data' } }), getImage: (token, id) => client.get(`/api/v1/items/${id}/image`, { headers: authHeader(token), responseType: 'blob' }), getByBox: (token, boxId) => client.get(`/api/v1/boxes/${boxId}/items`, { headers: authHeader(token) }), }, // Boxes boxes: { getAll: (token) => client.get('/api/v1/boxes', { headers: authHeader(token) }), create: (token, boxData) => client.post('/api/v1/boxes', boxData, { headers: authHeader(token) }), delete: (token, id) => client.delete(`/api/v1/boxes/${id}`, { headers: authHeader(token) }), }, // Admin admin: { getUsers: (token) => client.get('/api/v1/admin/user', { headers: authHeader(token) }), createUser: (token, userData) => client.post('/api/v1/admin/user', userData, { headers: authHeader(token) }), deleteUser: (token, id) => client.delete(`/api/v1/admin/user/${id}`, { headers: authHeader(token) }), backupDb: (token) => client.get('/api/v1/admin/db', { headers: authHeader(token), responseType: 'blob' }), restoreDb: (token, formData) => client.post('/api/v1/admin/db', formData, { headers: { ...authHeader(token), 'Content-Type': 'multipart/form-data' } }), } }; }; export const api = createApiClient();