Files
IoT_PreTester_V46_Demo/frontend/src/services/apiIOT.ts
T
2026-08-19 08:04:59 +02:00

116 lines
2.8 KiB
TypeScript

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<Device[]> => {
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
}
}