modules/Devolutions.CIEM.Checks/Private/UpdateCIEMCheckStorageSchema.ps1
|
function UpdateCIEMCheckStorageSchema { [CmdletBinding()] param() $ErrorActionPreference = 'Stop' $columns = @( Invoke-CIEMQuery -Query 'PRAGMA table_info(checks)' ) if ($columns.Count -eq 0) { throw "Checks table does not exist." } $columnNames = @($columns | ForEach-Object { $_.name }) if (@(Compare-Object -ReferenceObject @('id', 'disabled') -DifferenceObject $columnNames).Count -eq 0) { return } $databasePath = Get-CIEMDatabasePath $connection = Open-PSUSQLiteConnection -Database $databasePath try { Invoke-PSUSQLiteQuery -Connection $connection -Query 'PRAGMA foreign_keys=OFF' -AsNonQuery | Out-Null Invoke-PSUSQLiteQuery -Connection $connection -Query @" CREATE TABLE IF NOT EXISTS checks_state_migration ( id TEXT PRIMARY KEY, disabled INTEGER NOT NULL DEFAULT 0 ) "@ -AsNonQuery | Out-Null Invoke-PSUSQLiteQuery -Connection $connection -Query @" INSERT INTO checks_state_migration (id, disabled) SELECT id, disabled FROM checks "@ -AsNonQuery | Out-Null Invoke-PSUSQLiteQuery -Connection $connection -Query 'DROP TABLE checks' -AsNonQuery | Out-Null Invoke-PSUSQLiteQuery -Connection $connection -Query 'ALTER TABLE checks_state_migration RENAME TO checks' -AsNonQuery | Out-Null Invoke-PSUSQLiteQuery -Connection $connection -Query 'PRAGMA foreign_keys=ON' -AsNonQuery | Out-Null } finally { $connection.Dispose() } } |