front-back integrated
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
// Базовый URL API. Если фронт и бэк на одном домене, можно использовать '' или '/api'
|
||||
const API_BASE = 'http://localhost:8000';
|
||||
|
||||
export async function fetchWorkoutTypes() {
|
||||
const res = await fetch(`${API_BASE}/workout-types/`);
|
||||
if (!res.ok) throw new Error('Failed to fetch workout types');
|
||||
return await res.json();
|
||||
}
|
||||
|
||||
export async function fetchMetricTypes() {
|
||||
const res = await fetch(`${API_BASE}/metric-types/`);
|
||||
if (!res.ok) throw new Error('Failed to fetch metric types');
|
||||
return await res.json();
|
||||
}
|
||||
|
||||
export async function fetchClients() {
|
||||
const res = await fetch(`${API_BASE}/clients/`);
|
||||
if (!res.ok) throw new Error('Failed to fetch clients');
|
||||
return await res.json();
|
||||
}
|
||||
|
||||
export async function fetchExerciseHistory(exerciseName, clientId = null) {
|
||||
let url = `${API_BASE}/exercises/history/${encodeURIComponent(exerciseName)}?limit=10`;
|
||||
if (clientId) url += `&client_id=${clientId}`;
|
||||
|
||||
const res = await fetch(url);
|
||||
if (!res.ok) throw new Error('Failed to fetch history');
|
||||
return await res.json();
|
||||
}
|
||||
|
||||
export async function syncData(payload) {
|
||||
const res = await fetch(`${API_BASE}/sync/`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify(payload)
|
||||
});
|
||||
|
||||
if (!res.ok) {
|
||||
const err = await res.json();
|
||||
console.error('❌ Sync API Error Detail:', err); // <-- Покажет, какое именно поле не прошло валидацию
|
||||
throw new Error(err.detail ? JSON.stringify(err.detail) : 'Sync failed');
|
||||
}
|
||||
return await res.json();
|
||||
}
|
||||
Reference in New Issue
Block a user