Files
haushalt/frontend/src/services/api.js
Marek Lenczewski b998940caa update
2026-03-31 18:09:15 +02:00

41 lines
1.9 KiB
JavaScript

const API_BASE = `${location.protocol}//${location.hostname}/api`
async function request(path, options = {}) {
const url = API_BASE + path
const res = await fetch(url, {
headers: { 'Content-Type': 'application/json', ...options.headers },
...options,
})
if (res.status === 204) return null
if (!res.ok) {
const err = await res.json().catch(() => ({}))
throw { status: res.status, body: err }
}
return res.json()
}
// Categories
export const getCategories = () => request('/categories')
export const getCategory = (id) => request(`/categories/${id}`)
export const createCategory = (data) => request('/categories', { method: 'POST', body: JSON.stringify(data) })
export const updateCategory = (id, data) => request(`/categories/${id}`, { method: 'PUT', body: JSON.stringify(data) })
export const deleteCategory = (id) => request(`/categories/${id}`, { method: 'DELETE' })
// Schemas
export const getSchemas = () => request('/schemas')
export const getSchema = (id) => request(`/schemas/${id}`)
export const createSchema = (data) => request('/schemas', { method: 'POST', body: JSON.stringify(data) })
export const updateSchema = (id, data) => request(`/schemas/${id}`, { method: 'PUT', body: JSON.stringify(data) })
export const deleteSchema = (id, deleteTasks = false) => {
const params = deleteTasks ? '?deleteTasks=1' : ''
return request(`/schemas/${id}${params}`, { method: 'DELETE' })
}
// Tasks
export const getTasks = () => request('/tasks')
export const getTask = (id) => request(`/tasks/${id}`)
export const createTask = (data) => request('/tasks', { method: 'POST', body: JSON.stringify(data) })
export const updateTask = (id, data) => request(`/tasks/${id}`, { method: 'PUT', body: JSON.stringify(data) })
export const deleteTask = (id) => request(`/tasks/${id}`, { method: 'DELETE' })
export const toggleTask = (id) => request(`/tasks/${id}/toggle`, { method: 'PATCH' })