72 lines
2.5 KiB
JavaScript
72 lines
2.5 KiB
JavaScript
// 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(); |