main
ts 64 lines 2.09 KB
Raw
1 import type {
2 CreateSnapshotRequest,
3 CreateSnapshotResponse,
4 RestoreSnapshotRequest,
5 RestoreSnapshotResponse,
6 SnapshotListResponse,
7 SnapshotRepositoryListResponse,
8 SnapshotScheduleCreate,
9 SnapshotScheduleListResponse,
10 SnapshotScheduleOperationResponse,
11 SnapshotScheduleUpdate,
12 SnapshotStatusResponse
13 } from "@/types/snapshots.d"
14 import { HttpClient } from "../httpClient"
15
16 // TODO-FE: refactor
17 export default {
18 // Repository endpoints
19 getRepositories() {
20 return HttpClient.get<SnapshotRepositoryListResponse>("/snapshots/repositories")
21 },
22
23 // Snapshot endpoints
24 getSnapshotStatus(repository?: string, snapshot?: string) {
25 const params = new URLSearchParams()
26 if (repository) params.append("repository", repository)
27 if (snapshot) params.append("snapshot", snapshot)
28 const queryString = params.toString()
29 return HttpClient.get<SnapshotStatusResponse>(`/snapshots/status${queryString ? `?${queryString}` : ""}`)
30 },
31
32 listSnapshots(repository: string) {
33 return HttpClient.get<SnapshotListResponse>(`/snapshots/repositories/${repository}/snapshots`)
34 },
35
36 createSnapshot(request: CreateSnapshotRequest) {
37 return HttpClient.post<CreateSnapshotResponse>("/snapshots/create", request)
38 },
39
40 restoreSnapshot(request: RestoreSnapshotRequest) {
41 return HttpClient.post<RestoreSnapshotResponse>("/snapshots/restore", request)
42 },
43
44 // Schedule endpoints
45 getSchedules(enabledOnly: boolean = false) {
46 return HttpClient.get<SnapshotScheduleListResponse>(`/snapshots/schedules?enabled_only=${enabledOnly}`)
47 },
48
49 getSchedule(scheduleId: number) {
50 return HttpClient.get<SnapshotScheduleOperationResponse>(`/snapshots/schedules/${scheduleId}`)
51 },
52
53 createSchedule(request: SnapshotScheduleCreate) {
54 return HttpClient.post<SnapshotScheduleOperationResponse>("/snapshots/schedules", request)
55 },
56
57 updateSchedule(scheduleId: number, request: SnapshotScheduleUpdate) {
58 return HttpClient.put<SnapshotScheduleOperationResponse>(`/snapshots/schedules/${scheduleId}`, request)
59 },
60
61 deleteSchedule(scheduleId: number) {
62 return HttpClient.delete<SnapshotScheduleOperationResponse>(`/snapshots/schedules/${scheduleId}`)
63 }
64 }