Skip to content

Commit 0ed29f7

Browse files
committed
feat: enhance backup restoration process to filter by selected types and count restored rows
1 parent 72fb7bd commit 0ed29f7

1 file changed

Lines changed: 21 additions & 5 deletions

File tree

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Settings/Invoke-ExecRestoreBackup.ps1

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,34 +29,50 @@ function Invoke-ExecRestoreBackup {
2929
throw "Failed to parse backup JSON: $($_.Exception.Message)"
3030
}
3131

32+
$SelectedTypes = $Request.Body.SelectedTypes
33+
if ($SelectedTypes -and $SelectedTypes.Count -gt 0) {
34+
$BackupData = $BackupData | Where-Object {
35+
$item = $_
36+
if ($item.table -eq 'templates') {
37+
$typeKey = "templates:$($item.PartitionKey)"
38+
} else {
39+
$typeKey = $item.table
40+
}
41+
$SelectedTypes -contains $typeKey
42+
}
43+
}
44+
$RestoredCount = 0
3245
$BackupData | ForEach-Object {
3346
$Table = Get-CippTable -tablename $_.table
3447
$ht2 = @{}
3548
$_.psobject.properties | ForEach-Object { $ht2[$_.Name] = [string]$_.Value }
3649
$Table.Entity = $ht2
37-
Add-CIPPAzDataTableEntity @Table -Force
50+
Add-AzDataTableEntity @Table -Force
51+
$RestoredCount++
3852
}
39-
Write-LogMessage -headers $Request.Headers -API $APINAME -message "Restored backup $($Request.Body.BackupName)" -Sev 'Info'
53+
Write-LogMessage -headers $Request.Headers -API $APINAME -message "Restored backup $($Request.Body.BackupName) - $RestoredCount rows restored" -Sev 'Info'
4054
$body = [pscustomobject]@{
41-
'Results' = 'Successfully restored backup.'
55+
'Results' = "Successfully restored $RestoredCount rows from backup."
4256
}
4357
} else {
4458
$body = [pscustomobject]@{
4559
'Results' = 'Backup not found.'
4660
}
4761
}
4862
} else {
63+
$RestoredCount = 0
4964
foreach ($line in ($Request.body | Select-Object * -ExcludeProperty ETag, Timestamp)) {
5065
$Table = Get-CippTable -tablename $line.table
5166
$ht2 = @{}
5267
$line.psobject.properties | ForEach-Object { $ht2[$_.Name] = [string]$_.Value }
5368
$Table.Entity = $ht2
5469
Add-AzDataTableEntity @Table -Force
70+
$RestoredCount++
5571
}
56-
Write-LogMessage -headers $Request.Headers -API $APINAME -message "Restored backup $($Request.Body.BackupName)" -Sev 'Info'
72+
Write-LogMessage -headers $Request.Headers -API $APINAME -message "Restored backup - $RestoredCount rows restored" -Sev 'Info'
5773

5874
$body = [pscustomobject]@{
59-
'Results' = 'Successfully restored backup.'
75+
'Results' = "Successfully restored $RestoredCount rows from backup."
6076
}
6177
}
6278
} catch {

0 commit comments

Comments
 (0)