import axios from "axios" import type { Device } from "@/types/device" import { getApiUrl } from "@/config/api" interface ApiDevice { id: number device_name: string device_type: string manufacturer_name: string serial: string comment: string created: string } interface ApiCapture { id: number filename: string upload: string firmware_version: string ip: string } interface ApiManufacturer { id: number name: string } interface ApiDeviceType { id: number device_type: string } export const getAllDevices = async (): Promise => { try { const response = await axios.get(getApiUrl("get_all_devices")) const devices = await Promise.all( response.data.map(async (device: ApiDevice) => { const filesResponse = await axios.get(getApiUrl(`get_file_by_device/${device.id}`)) const filesData: ApiCapture[] = filesResponse.data return { id: String(device.id), name: device.device_name, type: device.device_type, manufacturer: device.manufacturer_name, serialNumber: device.serial, comment: device.comment, ipAddress: "", lastScanned: new Date(device.created).toLocaleDateString("en-GB"), files: filesData.map((file) => ({ id: String(file.id), name: file.filename, uploadedAt: file.upload, status: "scanned" as const, firmwareVersion: file.firmware_version, ipAddress: file.ip, })), } }), ) return devices } catch (error) { console.error("Failed to fetch devices:", error) return [] } } export const getManufacturers = async () => { try { const response = await axios.get(getApiUrl("get_all_manufacturers")) return response.data.map((type: ApiManufacturer) => ({ value: String(type.id), label: type.name, })) } catch (error) { console.error("Failed to fetch manufacturers:", error) return [] } } export const getDeviceTypes = async () => { try { const response = await axios.get(getApiUrl("get_all_devicetypes")) return response.data.map((type: ApiDeviceType) => ({ value: String(type.id), label: type.device_type, })) } catch (error) { console.error("Failed to fetch device types:", error) return [] } } export const addDevice = async (newDevice: { device_name: string device_type_id: string manufacturer_id: string serial: string comment: string }) => { try { await axios.post(getApiUrl("create_device"), newDevice) } catch (error) { console.error("Failed to add device:", error) throw error } } export const deleteDevice = async (deviceId: string) => { try { await axios.delete(getApiUrl(`delete_device/${deviceId}`)) } catch (error) { console.error("Failed to delete device:", error) throw error } }