build 4.6 Demo
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user