generated from gilles/template-webapp
claude code
This commit is contained in:
83
frontend/src/api/items.ts
Normal file
83
frontend/src/api/items.ts
Normal file
@@ -0,0 +1,83 @@
|
||||
/**
|
||||
* 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<PaginatedResponse<ItemWithRelations>> {
|
||||
const response = await apiClient.get<PaginatedResponse<ItemWithRelations>>('/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<ItemWithRelations> {
|
||||
const response = await apiClient.get<ItemWithRelations>(`/items/${id}`)
|
||||
return response.data
|
||||
},
|
||||
|
||||
/**
|
||||
* Crée un nouvel objet
|
||||
*/
|
||||
async create(data: ItemCreate): Promise<Item> {
|
||||
const response = await apiClient.post<Item>('/items', data)
|
||||
return response.data
|
||||
},
|
||||
|
||||
/**
|
||||
* Met à jour un objet
|
||||
*/
|
||||
async update(id: number, data: ItemUpdate): Promise<Item> {
|
||||
const response = await apiClient.put<Item>(`/items/${id}`, data)
|
||||
return response.data
|
||||
},
|
||||
|
||||
/**
|
||||
* Supprime un objet
|
||||
*/
|
||||
async delete(id: number): Promise<SuccessResponse> {
|
||||
const response = await apiClient.delete<SuccessResponse>(`/items/${id}`)
|
||||
return response.data
|
||||
},
|
||||
|
||||
/**
|
||||
* Change le statut d'un objet
|
||||
*/
|
||||
async updateStatus(id: number, status: ItemStatus): Promise<Item> {
|
||||
const response = await apiClient.patch<Item>(`/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<Item> {
|
||||
const response = await apiClient.patch<Item>(`/items/${id}/location`, null, {
|
||||
params: { new_location_id: locationId },
|
||||
})
|
||||
return response.data
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user