- 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.
61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
'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 };
|
|
}
|
|
}
|