feat: implement backup management features
- Added `createBackupAction`, `verifyDatabaseAction`, and `refreshBackupStatsAction` for handling backup operations. - Introduced `getBackupStats` method in `BackupClient` to retrieve daily backup statistics. - Updated API route to support fetching backup stats. - Integrated backup stats into the `BackupSettingsPage` and visualized them with `BackupTimelineChart`. - Enhanced `BackupSettingsPageClient` to manage backup stats and actions more effectively.
This commit is contained in:
60
src/actions/backup.ts
Normal file
60
src/actions/backup.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
'use server';
|
||||
|
||||
import { backupService } from '@/services/data-management/backup';
|
||||
import { revalidatePath } from 'next/cache';
|
||||
|
||||
export async function createBackupAction(force: boolean = false) {
|
||||
try {
|
||||
const result = await backupService.createBackup('manual', force);
|
||||
|
||||
// Invalider le cache de la page pour forcer le rechargement des données SSR
|
||||
revalidatePath('/settings/backup');
|
||||
|
||||
if (result === null) {
|
||||
return {
|
||||
success: true,
|
||||
skipped: true,
|
||||
message: 'Sauvegarde sautée : aucun changement détecté. Utilisez "Forcer" pour créer malgré tout.'
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
success: true,
|
||||
data: result,
|
||||
message: `Sauvegarde créée : ${result.filename}`
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Failed to create backup:', error);
|
||||
return {
|
||||
success: false,
|
||||
error: error instanceof Error ? error.message : 'Erreur lors de la création de la sauvegarde'
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export async function verifyDatabaseAction() {
|
||||
try {
|
||||
await backupService.verifyDatabaseHealth();
|
||||
return {
|
||||
success: true,
|
||||
message: 'Intégrité vérifiée'
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Database verification failed:', error);
|
||||
return {
|
||||
success: false,
|
||||
error: error instanceof Error ? error.message : 'Vérification échouée'
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
export async function refreshBackupStatsAction() {
|
||||
try {
|
||||
// Cette action sert juste à revalider le cache
|
||||
revalidatePath('/settings/backup');
|
||||
return { success: true };
|
||||
} catch (error) {
|
||||
console.error('Failed to refresh backup stats:', error);
|
||||
return { success: false };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user