import request from '@/service/request'

/**
 * 此函数根据给定的查询参数检索事件列表。
 * @param params - “params”参数是一个“IOT.API.MODEL.QueryPamars”类型的对象，其中包含查询参数，这些参数将与 GET
 * 请求一起发送到“/event/list”端点。这些查询参数可用于过滤、排序或分页 API 返回的结果
 * @returns `getEventList` 函数返回一个解析为 `IOT.API.MODEL.ModelDot` 对象数组的
 * Promise。该数组包含使用指定查询参数向“/event/list”端点发出 GET 请求从服务器获取的事件列表。
 */
export const getEventList = (params: IOT.API.EVENT.QueryParams) => {
  return request<IOT.API.MODEL.ModelDot[]>({
    url: '/event/page',
    method: 'GET',
    params
  })
}

export const getEventAll = (params: {deviceId: string, lastId?: string, startTime?: number}) => {
  return request<IOT.API.EVENT.Event>({
    url: '/event/list',
    method: 'GET',
    params
  })
}

/**
 * 该函数为特定设备添加事件跟踪。
 * @param data - `data` 参数是一个包含 `deviceId` 属性的对象。此对象用作对“/event/trace”端点的 HTTP POST 请求的有效负载。
 * @returns `addEventTrace` 函数返回一个解析为字符串的 Promise。该字符串是对 `/event/trace` 端点发出的 HTTP POST 请求的响应，其中提供的
 * `data` 对象作为请求主体。
 */
export const addEventTrace = (data: {deviceId: string}) => {
  return request<string>({
    url: '/event/trace',
    method: 'POST',
    data
  })
}

/**
 * 函数 getEventTrace 发出 GET 请求以检索特定设备的事件跟踪。
 * @param params - `params` 参数是一个包含单个属性 `deviceId` 的对象，它是一个表示设备 ID 的字符串。此参数用于向“/event/trace”端点发出 GET
 * 请求，以检索指定设备的事件跟踪。
 * @returns 一个函数，它使用 deviceId 参数向“/event/trace”端点发出 GET 请求，并返回一个用字符串解析的 Promise。
 */
export const getEventTrace = (params: {deviceId: string}) => {
  return request<IOT.API.EVENT.Event[]>({
    url: '/event/trace',
    method: 'GET',
    params
  })
}
