app/apiHandler/referencesApiSlice.js

/**
 * @file
 * File : referencesApiSlice.js\
 * Defines API endpoints for managing references using RTK Query.
 * Extends the base API slice with related endpoints.
 *
 * @author  Pierre-Yves Léglise <contact@axialdata.net>
 * @name referencesApiSlice
 */
import { apiSlice } from './apiSlice'

export const referencesApiSlice = apiSlice.injectEndpoints({
  endpoints: (builder) => ({
    listReferences: builder.query({
      query: (params) => ({
        url: `/references`,
        method: 'get',
        withCredentials: true,
        params: { ...params },
      }),
    }),

    searchReferences: builder.query({
      query: (query) => ({
        url: `/references/search`,
        method: 'get',
        withCredentials: true,
        params: { q: query }, // Ajout du paramètre de recherche
      }),
      keepUnusedDataFor: 0, // Optionnel, pour éviter de garder les anciennes recherches en cache
    }),

    updateReference: builder.mutation({
      query: ({ id, data }) => ({
        url: `/reference/${id}`,
        method: 'patch',
        withCredentials: true,
        data: { ...data },
      }),
      keepUnusedDataFor: 0,
    }),

    createReference: builder.mutation({
      query: ({ data }) => ({
        url: `/reference`,
        method: 'put',
        withCredentials: true,
        data: { ...data },
      }),
      keepUnusedDataFor: 0,
    }),

    deleteReference: builder.mutation({
      query: ({ id }) => ({
        url: `/reference/${id}`,
        method: 'delete',
        withCredentials: true,
      }),
      keepUnusedDataFor: 0,
    }),
  }),
})

/**
 * Hooks for interacting with the orders-related endpoints.
 *
 * @typedef {Object} Hooks
 * @author  Pierre-Yves Léglise <contact@axialdata.net>
 * @property {Function}  - Hook to trigger the getOrdersList query.
 * @example
 *  const { data, isLoading, isFetching } = useGetOrdersListQuery({
 *    ordersGroupNb: selectedOrdersGroupNb,
 *  })
 * @returns {Object} Object containing order-related endpoint hooks.
 */
export const {
  useListReferencesQuery,
  useSearchReferencesQuery,
  useUpdateReferenceMutation,
  useDeleteReferenceMutation,
  useCreateReferenceMutation,
} = referencesApiSlice