gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/nodes/services/nodes-usage.query.ts · v0.6.0
Source
1 78a3e64 Dawsh 2y ago import { useQuery } from "@tanstack/react-query";
2 78a3e64 Dawsh 2y ago import { fetch } from "@marzneshin/utils";
3 78a3e64 Dawsh 2y ago
4 78a3e64 Dawsh 2y ago export type UsageMetric = number[];
5 78a3e64 Dawsh 2y ago
6 78a3e64 Dawsh 2y ago export interface NodesUsageResponse {
7 78a3e64 Dawsh 2y ago usages: Array<UsageMetric>;
8 78a3e64 Dawsh 2y ago total: number;
9 78a3e64 Dawsh 2y ago }
10 78a3e64 Dawsh 2y ago
11 78a3e64 Dawsh 2y ago export interface NodesUsageQueryOptions {
12 78a3e64 Dawsh 2y ago nodeId: number;
13 78a3e64 Dawsh 2y ago start: string;
14 78a3e64 Dawsh 2y ago end: string;
15 78a3e64 Dawsh 2y ago }
16 78a3e64 Dawsh 2y ago
17 78a3e64 Dawsh 2y ago export type NodesUsageQueryKey = [string, number, string, { start?: string, end?: string }]
18 78a3e64 Dawsh 2y ago
19 78a3e64 Dawsh 2y ago export const NodesUsageDefault = {
20 78a3e64 Dawsh 2y ago total: 0,
21 78a3e64 Dawsh 2y ago usages: []
22 78a3e64 Dawsh 2y ago }
23 78a3e64 Dawsh 2y ago
24 78a3e64 Dawsh 2y ago export async function fetchNodesUsage({ queryKey }: { queryKey: NodesUsageQueryKey }): Promise<NodesUsageResponse> {
25 78a3e64 Dawsh 2y ago return await fetch(`/nodes/${queryKey[1]}/usage`, {
26 78a3e64 Dawsh 2y ago query: {
27 78a3e64 Dawsh 2y ago start: queryKey[3].start,
28 78a3e64 Dawsh 2y ago end: queryKey[3].end
29 78a3e64 Dawsh 2y ago }
30 78a3e64 Dawsh 2y ago }).then((result) => {
31 78a3e64 Dawsh 2y ago return result;
32 78a3e64 Dawsh 2y ago });
33 78a3e64 Dawsh 2y ago }
34 78a3e64 Dawsh 2y ago export const useNodesUsageQuery = ({ nodeId, start, end }: NodesUsageQueryOptions) => {
35 78a3e64 Dawsh 2y ago return useQuery({
36 78a3e64 Dawsh 2y ago queryKey: ["nodes", nodeId, "usage", { start, end }],
37 78a3e64 Dawsh 2y ago queryFn: fetchNodesUsage,
38 78a3e64 Dawsh 2y ago refetchInterval: 1000 * 60 * 5, // 60min refresh
39 78a3e64 Dawsh 2y ago initialData: NodesUsageDefault
40 78a3e64 Dawsh 2y ago })
41 78a3e64 Dawsh 2y ago }