UNPKG

mantine-entity

Version:

A library combining Mantine, TanStack Query, and Mantine React Table for efficient entity management

65 lines (64 loc) 2.45 kB
"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, }); };