ConvoyPanel/resources/scripts/api/server/backups/getBackups.ts
2022-11-24 01:22:30 +00:00

53 lines
No EOL
1.4 KiB
TypeScript

import http, { FractalResponseData, getPaginationSet, PaginatedResult } from '@/api/http'
interface QueryParams {
query?: string
page?: number
perPage?: number
}
export interface Backup {
uuid: string
isSuccessful: boolean
isLocked: boolean
name: string
size: number
completedAt?: Date
createdAt: Date
}
export const rawDataToBackupObject = (data: FractalResponseData): Backup => ({
uuid: data.uuid,
isSuccessful: data.is_successful,
isLocked: data.is_locked,
name: data.name,
size: data.size,
completedAt: data.completed_at ? new Date(data.completed_at) : undefined,
createdAt: new Date(data.created_at),
})
export type BackupResponse = PaginatedResult<Backup> & { backupCount: number }
export default (uuid: string, {
query,
perPage = 10,
...params
}: QueryParams): Promise<BackupResponse> => {
return new Promise((resolve, reject) => {
http.get(`/api/client/servers/${uuid}/backups`, {
params: {
'filter[name]': query,
per_page: perPage,
...params,
},
})
.then(({ data }) => resolve({
items: (data.data || []).map((datum: any) =>
rawDataToBackupObject(datum)
),
pagination: getPaginationSet(data.meta.pagination),
backupCount: data.meta.backup_count
}))
.catch(reject)
})
}