76 lines
2.0 KiB
TypeScript
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
|
|
},
|
|
}
|
|
|