mantine-entity
Version:
A library combining Mantine, TanStack Query, and Mantine React Table for efficient entity management
65 lines (64 loc) • 2.45 kB
JavaScript
"use client";
import { useFetchQuery } from "../../hooks/useFetchQuery";
import { encodeCollectionQuery } from "../../utils/collection-query-builder";
import { useMutationQuery } from "../../hooks/useMutationQuery";
export const useListQuery = ({ collectionQuery, actionQuery, rootConfig, requestParams, }) => {
const q = `${encodeCollectionQuery(collectionQuery)}`;
const params = new URLSearchParams({
q,
});
return useFetchQuery({
key: [rootConfig?.mainQueryKey, actionQuery?.queryKey ?? "list", q],
fetchParams: {
url: `${requestParams.getBaseUrl(actionQuery?.url() ?? "")}${actionQuery?.dataType === "paginated" ? "?" + params : ""}`,
method: actionQuery?.method ?? "GET",
},
options: {
enabled: !!actionQuery,
},
httpGet: requestParams.httpGet,
});
};
export const useViewQuery = ({ actionQuery, rootConfig, id, requestParams, }) => {
return useFetchQuery({
key: [rootConfig?.mainQueryKey, actionQuery?.queryKey ?? "view", id],
fetchParams: {
url: `${requestParams.getBaseUrl(actionQuery?.url({ id }) ?? "")}`,
method: actionQuery?.method ?? "GET",
},
options: {
enabled: !!actionQuery && !!id,
},
httpGet: requestParams.httpGet,
});
};
export const useCreateQuery = ({ actionQuery, rootConfig, requestParams, }) => {
return useMutationQuery({
mutationParams: {
url: `${requestParams.getBaseUrl(actionQuery?.url() ?? "")}`,
method: actionQuery?.method ?? "POST",
},
invalidateTags: [rootConfig?.mainQueryKey],
...requestParams,
});
};
export const useUpdateQuery = ({ actionQuery, rootConfig, data, requestParams, }) => {
return useMutationQuery({
mutationParams: {
url: `${requestParams.getBaseUrl(actionQuery?.url(data) ?? "")}`,
method: actionQuery?.method ?? "PUT",
},
invalidateTags: [rootConfig?.mainQueryKey],
...requestParams,
});
};
export const useDeleteQuery = ({ actionQuery, rootConfig, data, requestParams, }) => {
return useMutationQuery({
mutationParams: {
url: `${requestParams.getBaseUrl(actionQuery?.url(data) ?? "")}`,
method: actionQuery?.method ?? "DELETE",
},
invalidateTags: [rootConfig?.mainQueryKey],
...requestParams,
});
};