Private/InvokeCIEMTransaction.ps1
|
function InvokeCIEMTransaction { param( [Parameter(Mandatory)] [scriptblock]$ScriptBlock ) $ErrorActionPreference = 'Stop' if (-not $script:DatabasePath) { $script:DatabasePath = New-CIEMDatabase -PassThru } $conn = Open-PSUSQLiteConnection -Database $script:DatabasePath Invoke-PSUSQLiteQuery -Connection $conn -Query "PRAGMA foreign_keys=ON" -AsNonQuery | Out-Null Invoke-PSUSQLiteQuery -Connection $conn -Query "BEGIN TRANSACTION" -AsNonQuery | Out-Null try { & $ScriptBlock $conn Invoke-PSUSQLiteQuery -Connection $conn -Query "COMMIT" -AsNonQuery | Out-Null } catch { Invoke-PSUSQLiteQuery -Connection $conn -Query "ROLLBACK" -AsNonQuery | Out-Null throw } finally { $conn.Dispose() } } |