* * SPDX-License-Identifier: GPL-3.0-or-later * * FILE INFORMATION * DEFGROUP: MokoStandards.Enterprise.Recovery * INGROUP: MokoStandards.Enterprise * REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform * PATH: /lib/Enterprise/ErrorRecovery.php * BRIEF: Error recovery framework * * @package MokoStandards\Enterprise * @version 04.00.04 * @author MokoStandards Team * @license GPL-3.0-or-later * @deprecated Individual class files should be used instead */ namespace MokoEnterprise; use Throwable; // For backward compatibility, ensure classes are loaded require_once __DIR__ . '/RecoveryError.php'; require_once __DIR__ . '/CheckpointManager.php'; require_once __DIR__ . '/RetryHelper.php'; require_once __DIR__ . '/RecoveryManager.php'; /** * Execute a callable with automatic rollback on failure. * * @param callable $operation Operation to execute * @param callable $rollback Rollback function to call on failure * @return mixed Result of operation * @throws Throwable Re-throws the original exception after rollback */ function withRollback(callable $operation, callable $rollback): mixed { try { return $operation(); } catch (Throwable $e) { error_log("Operation failed, executing rollback: {$e->getMessage()}"); try { $rollback(); error_log("Rollback completed successfully"); } catch (Throwable $rollbackError) { error_log("Rollback failed: {$rollbackError->getMessage()}"); } throw $e; } }