• Restores application data from backup with optional result merging. Validates backup before restoration and optionally merges match results.

    Parameters

    • backupData: BackupData

      Backup data to restore.

    • Optionaloptions: { merge?: boolean }

      Restoration options.

      • Optionalmerge?: boolean

        If true, merge match results instead of replacing (default: false).

    Returns Promise<{ success: boolean; errors: string[] }>

    Success status and any error messages.

    If validation fails or restoration encounters critical error.

    export async function restoreBackup(
    backupData: BackupData,
    options?: { merge?: boolean },
    ): Promise<{ success: boolean; errors: string[] }> {
    const errors: string[] = [];

    try {
    console.log("[Backup] Starting restore process...");

    // Validate backup
    const validation = validateBackup(backupData);
    if (!validation.valid) {
    console.error("[Backup] Validation failed:", validation.errors);
    throw new Error(
    `Backup validation failed: ${validation.errors.join("; ")}`,
    );
    }

    // Restore each data key using helper to keep control flow simple
    for (const key of BACKUPABLE_KEYS) {
    const err = restoreKeyFromBackup(key, backupData, options);
    if (err) errors.push(err);
    }

    // Update cache version to current version after restore
    const cacheErr = updateCacheVersion();
    if (cacheErr) errors.push(cacheErr);

    if (errors.length > 0) {
    console.warn("[Backup] Restore completed with errors:", errors);
    return { success: false, errors };
    }

    console.log("[Backup] Restore completed successfully");
    return { success: true, errors: [] };
    } catch (error) {
    const message = `Restore error: ${
    error instanceof Error ? error.message : "Unknown error"
    }`;
    console.error("[Backup]", message);
    errors.push(message);
    return { success: false, errors };
    }
    }