modules/Azure/Discovery/Private/UpdateCIEMAzureResourceType.ps1
|
function UpdateCIEMAzureResourceType { [CmdletBinding(DefaultParameterSetName = 'ByProperties')] [OutputType('CIEMAzureResourceType[]')] param( [Parameter(Mandatory, ParameterSetName = 'ByProperties')] [string]$Type, [Parameter(ParameterSetName = 'ByProperties')] [string]$ApiSource, [Parameter(ParameterSetName = 'ByProperties')] [string]$GraphTable, [Parameter(ParameterSetName = 'ByProperties')] [int]$ResourceCount, [Parameter(ParameterSetName = 'ByProperties')] [string]$DiscoveredAt, [Parameter(ParameterSetName = 'ByProperties')] [string]$LastCollected, [Parameter(ParameterSetName = 'ByProperties')] [switch]$PassThru, [Parameter(Mandatory, ParameterSetName = 'InputObject', ValueFromPipeline)] [PSObject[]]$InputObject ) process { if ($PSCmdlet.ParameterSetName -eq 'InputObject') { foreach ($obj in $InputObject) { $parameters = @{ type = $obj.Type api_source = $obj.ApiSource graph_table = $obj.GraphTable resource_count = $obj.ResourceCount discovered_at = $obj.DiscoveredAt last_collected = $obj.LastCollected } Invoke-CIEMQuery -Query @" UPDATE azure_resource_types SET api_source = @api_source, graph_table = @graph_table, resource_count = @resource_count, discovered_at = @discovered_at, last_collected = @last_collected WHERE type = @type "@ -Parameters $parameters -AsNonQuery | Out-Null } return } $columnMap = @{ ApiSource = 'api_source' GraphTable = 'graph_table' ResourceCount = 'resource_count' DiscoveredAt = 'discovered_at' LastCollected = 'last_collected' } $setClauses = @() $parameters = @{ type = $Type } foreach ($paramName in $columnMap.Keys) { if ($PSBoundParameters.ContainsKey($paramName)) { $col = $columnMap[$paramName] $setClauses += "$col = @$col" $parameters[$col] = $PSBoundParameters[$paramName] } } if ($setClauses.Count -eq 0) { if ($PassThru) { Get-CIEMAzureResourceType -Type $Type } return } $sql = "UPDATE azure_resource_types SET " + ($setClauses -join ', ') + " WHERE type = @type" Invoke-CIEMQuery -Query $sql -Parameters $parameters -AsNonQuery | Out-Null if ($PassThru) { Get-CIEMAzureResourceType -Type $Type } } } |