gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/nodes/api/backend-stats.query.ts · v0.6.5
Source
1 78a3e64 Dawsh 2y ago import type { NodeType } from "@marzneshin/modules/nodes";
2 f5c168d Mardin 2y ago import { useQuery } from "@tanstack/react-query";
3 d636f3f Dawsh 2y ago import { fetch } from "@marzneshin/common/utils";
4 f5c168d Mardin 2y ago
5 f5c168d Mardin 2y ago type NodeBackendStatsQueryKey = [string, number, string, string];
6 f5c168d Mardin 2y ago
7 f5c168d Mardin 2y ago interface NodeBackendStatsQuery {
8 d636f3f Dawsh 2y ago queryKey: NodeBackendStatsQueryKey;
9 f5c168d Mardin 2y ago }
10 f5c168d Mardin 2y ago
11 f5c168d Mardin 2y ago export async function fetchNodeBackendStats({
12 d636f3f Dawsh 2y ago queryKey,
13 f5c168d Mardin 2y ago }: NodeBackendStatsQuery): Promise<{
14 d636f3f Dawsh 2y ago running: boolean;
15 f5c168d Mardin 2y ago } | null> {
16 d636f3f Dawsh 2y ago return fetch(`/nodes/${Number(queryKey[1])}/${queryKey[2]}/stats`)
17 d636f3f Dawsh 2y ago .then((stats) => stats)
18 d636f3f Dawsh 2y ago .catch(() => null);
19 f5c168d Mardin 2y ago }
20 f5c168d Mardin 2y ago
21 f5c168d Mardin 2y ago export const useBackendStatsQuery = (node: NodeType, backend: string) => {
22 d636f3f Dawsh 2y ago const queryKey: NodeBackendStatsQueryKey = [
23 d636f3f Dawsh 2y ago "nodes",
24 d636f3f Dawsh 2y ago node.id,
25 d636f3f Dawsh 2y ago backend,
26 d636f3f Dawsh 2y ago "stats",
27 d636f3f Dawsh 2y ago ];
28 f5c168d Mardin 2y ago
29 d636f3f Dawsh 2y ago return useQuery({
30 d636f3f Dawsh 2y ago queryKey,
31 d636f3f Dawsh 2y ago queryFn: fetchNodeBackendStats,
32 d636f3f Dawsh 2y ago refetchInterval: 1000 * 5,
33 d636f3f Dawsh 2y ago initialData: null,
34 d636f3f Dawsh 2y ago });
35 f5c168d Mardin 2y ago };