From 9f708e5746b9ba568793bdd313fdf2e10da1d949 Mon Sep 17 00:00:00 2001 From: headlessdev Date: Sun, 1 Jun 2025 15:43:11 +0200 Subject: [PATCH] useServers hook --- hooks/useMonitoring.ts | 1 - hooks/useServers.ts | 57 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 hooks/useServers.ts diff --git a/hooks/useMonitoring.ts b/hooks/useMonitoring.ts index 5529c1b..6bbb2e2 100644 --- a/hooks/useMonitoring.ts +++ b/hooks/useMonitoring.ts @@ -1,4 +1,3 @@ -import { useState, useEffect, useCallback } from "react"; import axios, { AxiosError } from "axios"; interface MonitoringSettings { diff --git a/hooks/useServers.ts b/hooks/useServers.ts new file mode 100644 index 0000000..08884a8 --- /dev/null +++ b/hooks/useServers.ts @@ -0,0 +1,57 @@ +import axios, { AxiosError } from "axios"; + +interface Server { + id: number; + networkId: number; + name: string; + description?: string; + icon?: string; + ipv4Address?: string; + osDetails?: string; + cpuDetails?: string; + gpuDetails?: string; + memoryDetails?: string; + storageDetails?: string; + monitoring: boolean; + monitoringUrl?: string; + managementUrl?: string; + applications?: any[]; + virtualMachines?: any[]; +} + +interface AddServer { + networkId: number; + name: string; + description?: string; + icon?: string; +} + + +const useServers = () => { + const getAllServers = (): Promise | string => { + return axios.get('/api/servers/get_all') + .then((response) => { + return response.data.servers; + }) + .catch(err => { + throw err.response?.data?.error || 'Failed to fetch servers'; + }); + }; + + const addServer = (server: AddServer): Promise | string => { + return axios.post('/api/servers/add', server) + .then((response) => { + return response.data.server; + }) + .catch(err => { + throw err.response?.data?.error || 'Failed to add server'; + }); + }; + + return { + getAllServers, + addServer, + }; +}; + +export default useServers; \ No newline at end of file