gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/nodes/services/nodes.query.ts · v0.5.5
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 65bbe9d Mardin 2y ago const pagination = queryKey[1];
13 65bbe9d Mardin 2y ago const primaryFilter = queryKey[2];
14 65bbe9d Mardin 2y ago const filters = queryKey[4].filters;
15 65bbe9d Mardin 2y ago return fetch(`/nodes`, {
16 65bbe9d Mardin 2y ago query: {
17 65bbe9d Mardin 2y ago ...pagination,
18 65bbe9d Mardin 2y ago ...filters,
19 65bbe9d Mardin 2y ago name: primaryFilter,
20 65bbe9d Mardin 2y ago descending: queryKey[3].desc,
21 65bbe9d Mardin 2y ago order_by: queryKey[3].sortBy,
22 65bbe9d Mardin 2y ago }
23 65bbe9d Mardin 2y ago }).then((result) => {
24 578311c Mrdn 2y ago return {
25 578311c Mrdn 2y ago entity: result.items,
26 578311c Mrdn 2y ago pageCount: result.pages,
27 578311c Mrdn 2y ago };
28 b15ff05 Mrdn 2y ago });
29 b15ff05 Mrdn 2y ago }
30 b15ff05 Mrdn 2y ago
31 b15ff05 Mrdn 2y ago export const NodesQueryFetchKey = "nodes";
32 b15ff05 Mrdn 2y ago
33 65bbe9d Mardin 2y ago export const useNodesQuery = ({
34 65bbe9d Mardin 2y ago page, size, sortBy = "created_at", desc = false, filters = {}
35 65bbe9d Mardin 2y ago }: UseEntityQueryProps) => {
36 b15ff05 Mrdn 2y ago return useQuery({
37 65bbe9d Mardin 2y ago queryKey: [NodesQueryFetchKey, { page, size }, filters?.username ?? "", { sortBy, desc }, { filters }],
38 b15ff05 Mrdn 2y ago queryFn: fetchNodes,
39 578311c Mrdn 2y ago initialData: { entity: [], pageCount: 0 },
40 f5c168d Mardin 2y ago });
41 f5c168d Mardin 2y ago };