import { httpClient } from './base/http-client'; import { BackupInfo, BackupConfig } from '@/services/backup'; export interface BackupListResponse { backups: BackupInfo[]; scheduler: { isRunning: boolean; isEnabled: boolean; interval: string; nextBackup: string | null; maxBackups: number; backupPath: string; }; config: BackupConfig; } export class BackupClient { private baseUrl = '/backups'; /** * Liste toutes les sauvegardes disponibles et l'état du scheduler */ async listBackups(): Promise { const response = await httpClient.get<{ data: BackupListResponse }>(this.baseUrl); return response.data; } /** * Crée une nouvelle sauvegarde manuelle */ async createBackup(): Promise { const response = await httpClient.post<{ data: BackupInfo }>(this.baseUrl, { action: 'create' }); return response.data; } /** * Vérifie l'intégrité de la base de données */ async verifyDatabase(): Promise { await httpClient.post(this.baseUrl, { action: 'verify' }); } /** * Met à jour la configuration des sauvegardes */ async updateConfig(config: Partial): Promise { const response = await httpClient.post<{ data: BackupConfig }>(this.baseUrl, { action: 'config', config }); return response.data; } /** * Démarre ou arrête le planificateur automatique */ async toggleScheduler(enabled: boolean): Promise<{ isRunning: boolean; isEnabled: boolean; interval: string; nextBackup: string | null; maxBackups: number; backupPath: string; }> { const response = await httpClient.post<{ data: { isRunning: boolean; isEnabled: boolean; interval: string; nextBackup: string | null; maxBackups: number; backupPath: string; } }>(this.baseUrl, { action: 'scheduler', enabled }); return response.data; } /** * Supprime une sauvegarde */ async deleteBackup(filename: string): Promise { await httpClient.delete(`${this.baseUrl}/${filename}`); } /** * Restaure une sauvegarde (développement uniquement) */ async restoreBackup(filename: string): Promise { await httpClient.post(`${this.baseUrl}/${filename}`, { action: 'restore' }); } } export const backupClient = new BackupClient();