Files
calypso/frontend/src/api/backup.ts
2025-12-29 02:44:52 +07:00

76 lines
2.0 KiB
TypeScript

import apiClient from './client'
export interface BackupJob {
id: string
job_id: number
job_name: string
client_name: string
job_type: string
job_level: string
status: 'Running' | 'Completed' | 'Failed' | 'Canceled' | 'Waiting'
bytes_written: number
files_written: number
duration_seconds?: number
started_at?: string
ended_at?: string
error_message?: string
storage_name?: string
pool_name?: string
volume_name?: string
created_at: string
updated_at: string
}
export interface ListJobsResponse {
jobs: BackupJob[]
total: number
limit: number
offset: number
}
export interface ListJobsParams {
status?: string
job_type?: string
client_name?: string
job_name?: string
limit?: number
offset?: number
}
export interface CreateJobRequest {
job_name: string
client_name: string
job_type: string
job_level: string
storage_name?: string
pool_name?: string
}
export const backupAPI = {
listJobs: async (params?: ListJobsParams): Promise<ListJobsResponse> => {
const queryParams = new URLSearchParams()
if (params?.status) queryParams.append('status', params.status)
if (params?.job_type) queryParams.append('job_type', params.job_type)
if (params?.client_name) queryParams.append('client_name', params.client_name)
if (params?.job_name) queryParams.append('job_name', params.job_name)
if (params?.limit) queryParams.append('limit', params.limit.toString())
if (params?.offset) queryParams.append('offset', params.offset.toString())
const response = await apiClient.get<ListJobsResponse>(
`/backup/jobs${queryParams.toString() ? `?${queryParams.toString()}` : ''}`
)
return response.data
},
getJob: async (id: string): Promise<BackupJob> => {
const response = await apiClient.get<BackupJob>(`/backup/jobs/${id}`)
return response.data
},
createJob: async (data: CreateJobRequest): Promise<BackupJob> => {
const response = await apiClient.post<BackupJob>('/backup/jobs', data)
return response.data
},
}