| 1 | import type { UnionToIntersection } from "type-fest" |
| 2 | import type { FlaskBaseResponse } from "@/types/flask.d" |
| 3 | import type { Log, LogsQuery, LogsQueryTimeRange } from "@/types/logs.d" |
| 4 | import { HttpClient } from "../httpClient" |
| 5 | |
| 6 | export default { |
| 7 | getLogs(query?: Partial<UnionToIntersection<LogsQuery>>) { |
| 8 | let method: "get" | "post" = "get" |
| 9 | let url = "logs" |
| 10 | let body: { time_range: LogsQueryTimeRange } | undefined |
| 11 | |
| 12 | if (query?.userId) { |
| 13 | method = "get" |
| 14 | url = `/logs/${query.userId}` |
| 15 | body = undefined |
| 16 | } else if (query?.timeRange) { |
| 17 | method = "post" |
| 18 | url = `/logs/timerange` |
| 19 | body = { |
| 20 | time_range: query.timeRange |
| 21 | } |
| 22 | } else if (query?.eventType) { |
| 23 | method = "post" |
| 24 | url = `/logs/${query.eventType}` |
| 25 | body = undefined |
| 26 | } |
| 27 | |
| 28 | return HttpClient[method]<FlaskBaseResponse & { logs: Log[] }>(url, body) |
| 29 | }, |
| 30 | purge(timeRange?: LogsQueryTimeRange) { |
| 31 | const url = timeRange ? `/logs/timerange` : `/logs` |
| 32 | return HttpClient.delete<FlaskBaseResponse & { logs: Log[] }>( |
| 33 | url, |
| 34 | timeRange ? { data: { time_range: timeRange } } : undefined |
| 35 | ) |
| 36 | } |
| 37 | } |