fear: change requests to RTK query
All checks were successful
it-academy/dry-wash-pl/pipeline/pr-main This commit looks good
All checks were successful
it-academy/dry-wash-pl/pipeline/pr-main This commit looks good
This commit is contained in:
@@ -1,20 +1,52 @@
|
||||
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
|
||||
import { getConfigValue } from '@brojs/cli';
|
||||
import dayjs from 'dayjs';
|
||||
|
||||
import { Master } from '../../models/api/master';
|
||||
import { OrderProps } from '../../components/OrderItem/OrderItem';
|
||||
|
||||
import { extractBodyFromResponse } from './utils';
|
||||
|
||||
export type UpdateMasterPayload = Required<Pick<Master, 'id'>> &
|
||||
Partial<Omit<Master, 'id'>>;
|
||||
|
||||
type UpdateOrderProps = Required<Pick<OrderProps, 'id'>> &
|
||||
Partial<Pick<OrderProps, 'status' | 'notes'>> & {
|
||||
master?: string;
|
||||
};
|
||||
|
||||
export const api = createApi({
|
||||
reducerPath: 'api',
|
||||
baseQuery: fetchBaseQuery({ baseUrl: getConfigValue('dry-wash.api') }),
|
||||
tagTypes: ['Masters'],
|
||||
tagTypes: ['Masters', 'Orders'],
|
||||
endpoints: (builder) => ({
|
||||
getMasters: builder.query<Master[], void>({
|
||||
query: () => ({ url: '/arm/masters' }),
|
||||
transformResponse: extractBodyFromResponse<Master[]>,
|
||||
providesTags: ['Masters'],
|
||||
}),
|
||||
updateOrders: builder.mutation<void, UpdateOrderProps>({
|
||||
query: ({ id, status, notes, master }) => ({
|
||||
url: `/order/${id}`,
|
||||
method: 'PATCH',
|
||||
body: { status, notes, master },
|
||||
}),
|
||||
invalidatesTags: ['Orders'],
|
||||
}),
|
||||
getOrders: builder.query<OrderProps[], { date: Date }>({
|
||||
query: ({ date }) => {
|
||||
const startDate = dayjs(date).startOf('day').toISOString();
|
||||
const endDate = dayjs(date).endOf('day').toISOString();
|
||||
return {
|
||||
url: '/arm/orders',
|
||||
method: 'POST',
|
||||
body: { startDate, endDate },
|
||||
};
|
||||
},
|
||||
transformResponse: extractBodyFromResponse<OrderProps[]>,
|
||||
providesTags: ['Orders'],
|
||||
}),
|
||||
|
||||
addMaster: builder.mutation<void, Pick<Master, 'name' | 'phone'>>({
|
||||
query: (master) => ({
|
||||
url: '/arm/masters',
|
||||
@@ -23,5 +55,29 @@ export const api = createApi({
|
||||
}),
|
||||
invalidatesTags: ['Masters'],
|
||||
}),
|
||||
deleteMaster: builder.mutation<void, { id: string }>({
|
||||
query: ({ id }) => ({
|
||||
url: `/arm/masters/${id}`,
|
||||
method: 'DELETE',
|
||||
}),
|
||||
invalidatesTags: ['Masters'],
|
||||
}),
|
||||
updateMaster: builder.mutation<void, UpdateMasterPayload>({
|
||||
query: ({ id, name, phone }) => ({
|
||||
url: `/arm/masters/${id}`,
|
||||
method: 'PATCH',
|
||||
body: { name, phone },
|
||||
}),
|
||||
invalidatesTags: ['Masters'],
|
||||
}),
|
||||
}),
|
||||
});
|
||||
|
||||
export const {
|
||||
useGetMastersQuery,
|
||||
useAddMasterMutation,
|
||||
useDeleteMasterMutation,
|
||||
useUpdateMasterMutation,
|
||||
useGetOrdersQuery,
|
||||
useUpdateOrdersMutation,
|
||||
} = api;
|
||||
|
||||
Reference in New Issue
Block a user