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

function Get-CIEMAzureDiscoveryRun {
    [CmdletBinding()]
    [OutputType('CIEMAzureDiscoveryRun[]')]
    param(
        [Parameter()]
        [int]$Id,

        [Parameter()]
        [string]$Status,

        [Parameter()]
        [int]$Last
    )

    $conditions = @()
    $parameters = @{}

    if ($PSBoundParameters.ContainsKey('Last')) {
        $rows = @(Invoke-CIEMQuery -Query "SELECT * FROM azure_discovery_runs ORDER BY started_at DESC LIMIT @last" -Parameters @{ last = $Last })
    } else {
        if ($PSBoundParameters.ContainsKey('Id')) {
            $conditions += "id = @id"
            $parameters.id = $Id
        }
        if ($PSBoundParameters.ContainsKey('Status')) {
            $conditions += "status = @status"
            $parameters.status = $Status
        }

        $query = "SELECT * FROM azure_discovery_runs"
        if ($conditions.Count -gt 0) {
            $query += "`nWHERE " + ($conditions -join ' AND ')
        }

        $rows = @(Invoke-CIEMQuery -Query $query -Parameters $parameters)
    }

    @(foreach ($row in $rows) {
        $obj = [CIEMAzureDiscoveryRun]::new()
        $obj.Id = $row.id
        $obj.PsuJobId = $row.psu_job_id
        $obj.Scope = $row.scope
        $obj.Status = $row.status
        $obj.StartedAt = $row.started_at
        $obj.CompletedAt = $row.completed_at
        $obj.ArmTypeCount = $row.arm_type_count
        $obj.ArmRowCount = $row.arm_row_count
        $obj.EntraTypeCount = $row.entra_type_count
        $obj.EntraRowCount = $row.entra_row_count
        $obj.WarningCount = $row.warning_count
        $obj.ErrorMessage = $row.error_message
        $obj
    })
}