/** * API pour les objets d'inventaire */ import { apiClient, PaginatedResponse, SuccessResponse } from './client' import { Item, ItemCreate, ItemFilter, ItemStatus, ItemUpdate, ItemWithRelations } from './types' export const itemsApi = { /** * Liste tous les objets avec filtres */ async getAll( page = 1, pageSize = 20, filters?: ItemFilter ): Promise> { const response = await apiClient.get>('/items', { params: { page, page_size: pageSize, search: filters?.search, category_id: filters?.category_id, location_id: filters?.location_id, status: filters?.status, min_price: filters?.min_price, max_price: filters?.max_price, }, }) return response.data }, /** * Récupère un objet par son ID */ async getById(id: number): Promise { const response = await apiClient.get(`/items/${id}`) return response.data }, /** * Crée un nouvel objet */ async create(data: ItemCreate): Promise { const response = await apiClient.post('/items', data) return response.data }, /** * Met à jour un objet */ async update(id: number, data: ItemUpdate): Promise { const response = await apiClient.put(`/items/${id}`, data) return response.data }, /** * Supprime un objet */ async delete(id: number): Promise { const response = await apiClient.delete(`/items/${id}`) return response.data }, /** * Change le statut d'un objet */ async updateStatus(id: number, status: ItemStatus): Promise { const response = await apiClient.patch(`/items/${id}/status`, null, { params: { new_status: status }, }) return response.data }, /** * Déplace un objet vers un nouvel emplacement */ async move(id: number, locationId: number): Promise { const response = await apiClient.patch(`/items/${id}/location`, null, { params: { new_location_id: locationId }, }) return response.data }, }