65 lines
1.7 KiB
TypeScript
65 lines
1.7 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 };
|
|
}
|
|
}
|