CoreControl/hooks/useServers.ts
2025-06-01 15:43:11 +02:00

57 lines
1.3 KiB
TypeScript

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<Server[]> | 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<Server> | 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;