modules/Azure/Discovery/Public/Update-CIEMAzureDiscoveryScheduleStatus.ps1

function Update-CIEMAzureDiscoveryScheduleStatus {
    [CmdletBinding()]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '', Justification = 'Updates local status metadata for the configured PSU schedule')]
    [OutputType([PSCustomObject])]
    param(
        [Parameter(Mandatory)]
        [int]$PsuScheduleId,

        [Parameter(Mandatory)]
        [ValidateSet('Running', 'Completed', 'Partial', 'Failed', 'Cancelled')]
        [string]$LastStatus,

        [Parameter(Mandatory)]
        [int]$LastDiscoveryRunId,

        [Parameter(Mandatory)]
        [int]$LastPsuJobId
    )

    $ErrorActionPreference = 'Stop'

    $now = (Get-Date).ToString('o')
    $affectedRows = Invoke-CIEMQuery -Query @"
UPDATE azure_discovery_schedules
SET last_status = @last_status,
    last_discovery_run_id = @last_discovery_run_id,
    last_psu_job_id = @last_psu_job_id,
    last_checked_at = @last_checked_at,
    updated_at = @updated_at
WHERE psu_schedule_id = @psu_schedule_id
"@
 -Parameters @{
        psu_schedule_id       = $PsuScheduleId
        last_status           = $LastStatus
        last_discovery_run_id = $LastDiscoveryRunId
        last_psu_job_id       = $LastPsuJobId
        last_checked_at       = $now
        updated_at            = $now
    } -AsNonQuery

    if ([int]$affectedRows -ne 1) {
        throw "CIEM Azure discovery schedule with PSU schedule id '$PsuScheduleId' was not found."
    }

    Get-CIEMAzureDiscoverySchedule | Where-Object { $_.PsuScheduleId -eq $PsuScheduleId }
}