Backup data to restore.
Optionaloptions: { merge?: boolean }Restoration options.
Optionalmerge?: booleanIf true, merge match results instead of replacing (default: false).
Success status and any error messages.
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 };
}
}
Restores application data from backup with optional result merging. Validates backup before restoration and optionally merges match results.