feat: deals table

This commit is contained in:
2025-08-28 20:23:58 +04:00
parent 4323695069
commit 19e5ef2a7e
14 changed files with 523 additions and 111 deletions

View File

@ -1,6 +1,11 @@
// This file is auto-generated by @hey-api/openapi-ts
import { queryOptions, type UseMutationOptions } from "@tanstack/react-query";
import {
infiniteQueryOptions,
queryOptions,
type InfiniteData,
type UseMutationOptions,
} from "@tanstack/react-query";
import type { AxiosError } from "axios";
import { client as _heyApiClient } from "../client.gen";
import {
@ -49,6 +54,8 @@ import type {
DeleteStatusResponse2,
GetBoardsData,
GetDealsData,
GetDealsError,
GetDealsResponse2,
GetProjectsData,
GetStatusesData,
UpdateBoardData,
@ -224,13 +231,13 @@ export const updateBoardMutation = (
return mutationOptions;
};
export const getDealsQueryKey = (options: Options<GetDealsData>) =>
export const getDealsQueryKey = (options?: Options<GetDealsData>) =>
createQueryKey("getDeals", options);
/**
* Get Deals
*/
export const getDealsOptions = (options: Options<GetDealsData>) => {
export const getDealsOptions = (options?: Options<GetDealsData>) => {
return queryOptions({
queryFn: async ({ queryKey, signal }) => {
const { data } = await getDeals({
@ -245,6 +252,91 @@ export const getDealsOptions = (options: Options<GetDealsData>) => {
});
};
const createInfiniteParams = <
K extends Pick<QueryKey<Options>[0], "body" | "headers" | "path" | "query">,
>(
queryKey: QueryKey<Options>,
page: K
) => {
const params = {
...queryKey[0],
};
if (page.body) {
params.body = {
...(queryKey[0].body as any),
...(page.body as any),
};
}
if (page.headers) {
params.headers = {
...queryKey[0].headers,
...page.headers,
};
}
if (page.path) {
params.path = {
...(queryKey[0].path as any),
...(page.path as any),
};
}
if (page.query) {
params.query = {
...(queryKey[0].query as any),
...(page.query as any),
};
}
return params as unknown as typeof page;
};
export const getDealsInfiniteQueryKey = (
options?: Options<GetDealsData>
): QueryKey<Options<GetDealsData>> => createQueryKey("getDeals", options, true);
/**
* Get Deals
*/
export const getDealsInfiniteOptions = (options?: Options<GetDealsData>) => {
return infiniteQueryOptions<
GetDealsResponse2,
AxiosError<GetDealsError>,
InfiniteData<GetDealsResponse2>,
QueryKey<Options<GetDealsData>>,
| number
| null
| Pick<
QueryKey<Options<GetDealsData>>[0],
"body" | "headers" | "path" | "query"
>
>(
// @ts-ignore
{
queryFn: async ({ pageParam, queryKey, signal }) => {
// @ts-ignore
const page: Pick<
QueryKey<Options<GetDealsData>>[0],
"body" | "headers" | "path" | "query"
> =
typeof pageParam === "object"
? pageParam
: {
query: {
page: pageParam,
},
};
const params = createInfiniteParams(queryKey, page);
const { data } = await getDeals({
...options,
...params,
signal,
throwOnError: true,
});
return data;
},
queryKey: getDealsInfiniteQueryKey(options),
}
);
};
export const createDealQueryKey = (options: Options<CreateDealData>) =>
createQueryKey("createDeal", options);