modules/Azure/Discovery/Public/New-CIEMAzureDiscoveryRun.ps1

function New-CIEMAzureDiscoveryRun {
    [CmdletBinding(DefaultParameterSetName = 'ByProperties')]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '', Justification = 'Creates a data record in database')]
    [OutputType('CIEMAzureDiscoveryRun')]
    param(
        [Parameter(Mandatory, ParameterSetName = 'ByProperties')]
        [string]$Scope,

        [Parameter(Mandatory, ParameterSetName = 'ByProperties')]
        [string]$Status,

        [Parameter(Mandatory, ParameterSetName = 'ByProperties')]
        [string]$StartedAt,

        [Parameter(ParameterSetName = 'ByProperties')]
        [int]$PsuJobId,

        [Parameter(ParameterSetName = 'ByProperties')]
        [string]$CompletedAt,

        [Parameter(ParameterSetName = 'ByProperties')]
        [int]$ArmTypeCount,

        [Parameter(ParameterSetName = 'ByProperties')]
        [int]$ArmRowCount,

        [Parameter(ParameterSetName = 'ByProperties')]
        [int]$EntraTypeCount,

        [Parameter(ParameterSetName = 'ByProperties')]
        [int]$EntraRowCount,

        [Parameter(ParameterSetName = 'ByProperties')]
        [int]$WarningCount,

        [Parameter(ParameterSetName = 'ByProperties')]
        [string]$ErrorMessage,

        [Parameter(Mandatory, ParameterSetName = 'InputObject', ValueFromPipeline)]
        [PSObject[]]$InputObject
    )

    process {
        if ($PSCmdlet.ParameterSetName -eq 'InputObject') {
            foreach ($obj in $InputObject) {
                New-CIEMAzureDiscoveryRun `
                    -Scope $obj.Scope `
                    -Status $obj.Status `
                    -StartedAt $obj.StartedAt `
                    -PsuJobId $obj.PsuJobId `
                    -CompletedAt $obj.CompletedAt `
                    -ArmTypeCount $obj.ArmTypeCount `
                    -ArmRowCount $obj.ArmRowCount `
                    -EntraTypeCount $obj.EntraTypeCount `
                    -EntraRowCount $obj.EntraRowCount `
                    -WarningCount $obj.WarningCount `
                    -ErrorMessage $obj.ErrorMessage
            }
            return
        }

        $parameters = @{
            psu_job_id       = $PsuJobId
            scope            = $Scope
            status           = $Status
            started_at       = $StartedAt
            completed_at     = $CompletedAt
            arm_type_count   = $ArmTypeCount
            arm_row_count    = $ArmRowCount
            entra_type_count = $EntraTypeCount
            entra_row_count  = $EntraRowCount
            warning_count    = $WarningCount
            error_message    = $ErrorMessage
        }

        Invoke-CIEMQuery -Query @"
INSERT INTO azure_discovery_runs (psu_job_id, scope, status, started_at, completed_at, arm_type_count, arm_row_count, entra_type_count, entra_row_count, warning_count, error_message)
VALUES (@psu_job_id, @scope, @status, @started_at, @completed_at, @arm_type_count, @arm_row_count, @entra_type_count, @entra_row_count, @warning_count, @error_message)
"@
 -Parameters $parameters -AsNonQuery | Out-Null

        $idRow = Invoke-CIEMQuery -Query "SELECT last_insert_rowid() as id"
        $newId = $idRow.id

        Get-CIEMAzureDiscoveryRun -Id $newId
    }
}