Snai3i-MarketPlace / frontend / src / app / backend / endpoints / orders.ts
orders.ts
Raw
import api from '..';
const ORDERS_API = '/order';

export const ordersApi = api.injectEndpoints({
  endpoints: (build) => ({
    getAllOrders: build.query<
      ResponseI<{
        teacherOrders: OrderI[];
        schoolOrders: OrderI[];
      }>,
      void
    >({
      query: () => ({
        url: `${ORDERS_API}`,
        method: 'GET',
      }),
      providesTags: ['orders','users','teachers'],
    }),
    getOrderById: build.query<ResponseI<OrderI>, number>({
      query: (orderId) => ({
        url: `${ORDERS_API}/${orderId}`,
        method: 'GET',
      }),
      providesTags: ['orders'],
    }),
    deleteOrder: build.mutation<
      ResponseI<null>,
      {
        order_id: number;
      }
    >({
      query: ({ order_id }) => ({
        url: `${ORDERS_API}/delete/${order_id}`,
        method: 'DELETE',
      }),
      invalidatesTags: ['orders'],
    }),
    createOrder: build.mutation<ResponseI<null>, OrderFormI>({
      query: (body) => ({
        url: `${ORDERS_API}/create`,
        method: 'POST',
        body: body,
      }),
      invalidatesTags: ['orders'],
    }),
    updateSchoolOrder: build.mutation<ResponseI<null>, OrderFormI>({
      query: (body) => ({
        url: `${ORDERS_API}/update/school/${body.order_id}`,
        method: 'PUT',
        body: body,
      }),
      invalidatesTags: ['orders'],
    }),
    updateTeacherOrder: build.mutation<ResponseI<null>, OrderFormI>({
      query: (body) => ({
        url: `${ORDERS_API}/update/teacher/${body.order_id}`,
        method: 'PUT',
        body: body,
      }),
      invalidatesTags: ['orders'],
    }),
  }),
});

export const {
  useGetAllOrdersQuery,
  useDeleteOrderMutation,
  useCreateOrderMutation,
  useGetOrderByIdQuery,
  useUpdateSchoolOrderMutation,
  useUpdateTeacherOrderMutation,
} = ordersApi;