main
ts 37 lines 1.05 KB
Raw
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 }