Есть 2 квери и одна мутация.
Сейчас происходит так, что при выполнении мутации инвалидируются обе квери, а нужно инвалидировать только ту, у которой есть все три тега:
{ type: TagTypes.VendorInvoiceReview, vendor: params.vendor_id, facility: params.facility_id },
то есть
getInvoiceReviewTaskDetails
Не пойму как это реализовать? По факту можно использовать 2 разных тега для двух квери, но подход так себе
const vendorInvoiceReviewApi = api.injectEndpoints({
endpoints: (build) => ({
getInvoiceReviewsTasks: build.query<ResponseWithTotal<InvoiceReviewTask>, ServerSideRequestParams>({
transformResponse: transformResponseWithTotal,
query: (params) => ({
method: 'GET',
url: '/api/invoice-reviews/tasks' + generateQueryParams(params),
}),
providesTags: [{ type: TagTypes.VendorInvoiceReview, id: 'LIST' }]
}),
getInvoiceReviewTaskDetails: build.query<InvoiceReviewTaskDetails, number>({
transformResponse,
query: (id) => ({
method: 'GET',
url: `/api/invoice-reviews/tasks/${id}`
}),
providesTags: (response) =>
response ?
[{ type: TagTypes.VendorInvoiceReview, id: response.id, vendor: response.vendor.id, facility: response.facility.id }] : []
}),
updateInvoiceReviewTask: build.mutation<void, UpdateFacilityInvoiceReviewTaskRequest>({
query: ({ facility_id, vendor_id, ...body }) => ({
url: `/api/invoice-reviews/vendor/${vendor_id}/facility/${facility_id}`,
method: "PUT",
body
}),
transformResponse,
invalidatesTags: (response, error, params) =>
[{ type: TagTypes.VendorInvoiceReview, vendor: params.vendor_id, facility: params.facility_id }]
})
}),
overrideExisting: false
})
По факту можно заменить
{ type: TagTypes.VendorInvoiceReview, id: response.id, vendor: response.vendor.id, facility: response.facility.id }
на
{ type: TagTypes.VendorInvoiceReview, id: response.id }
и в мутации инвалидировать именно этот тег с типом и айди, но
1. Я не хочу прокидывать айди в мутацию, так как оно там не нужно
2. Хотелось бы инвалидировать все таски с конкретным вендором и фасилити, а не только одну по айди