gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/nodes/services/nodes.query.ts · v0.5.2
Source
1 f5c168d Mardin 2y ago import type { NodeType } from "@marzneshin/features/nodes";
2 b15ff05 Mrdn 2y ago import { useQuery } from "@tanstack/react-query";
3 b15ff05 Mrdn 2y ago import { fetch } from "@marzneshin/utils";
4 f5c168d Mardin 2y ago import type {
5 578311c Mrdn 2y ago EntityQueryKeyType,
6 f5c168d Mardin 2y ago UseEntityQueryProps,
7 4cebd65 Mardin 2y ago } from "@marzneshin/features/entity-table";
8 b15ff05 Mrdn 2y ago
9 f5c168d Mardin 2y ago export async function fetchNodes({
10 f5c168d Mardin 2y ago queryKey,
11 f5c168d Mardin 2y ago }: EntityQueryKeyType): Promise<{ entity: NodeType[]; pageCount: number }> {
12 f5c168d Mardin 2y ago return fetch(
13 f5c168d Mardin 2y ago `/nodes?page=${queryKey[1]}&size=${queryKey[2]}&name=${queryKey[3]}`,
14 f5c168d Mardin 2y ago ).then((result) => {
15 578311c Mrdn 2y ago return {
16 578311c Mrdn 2y ago entity: result.items,
17 578311c Mrdn 2y ago pageCount: result.pages,
18 578311c Mrdn 2y ago };
19 b15ff05 Mrdn 2y ago });
20 b15ff05 Mrdn 2y ago }
21 b15ff05 Mrdn 2y ago
22 b15ff05 Mrdn 2y ago export const NodesQueryFetchKey = "nodes";
23 b15ff05 Mrdn 2y ago
24 6b38fe9 Mrdn 2y ago export const useNodesQuery = ({ page, size, search }: UseEntityQueryProps) => {
25 b15ff05 Mrdn 2y ago return useQuery({
26 6b38fe9 Mrdn 2y ago queryKey: [NodesQueryFetchKey, page, size, search ? search : ""],
27 b15ff05 Mrdn 2y ago queryFn: fetchNodes,
28 578311c Mrdn 2y ago initialData: { entity: [], pageCount: 0 },
29 f5c168d Mardin 2y ago });
30 f5c168d Mardin 2y ago };