'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 };
  }
}
