public/Stop-UnraidParityCheck.ps1

function Stop-UnraidParityCheck {
    <#
    .SYNOPSIS
        Cancels a parity check.

    .PARAMETER Array
        Array object (auto-retrieves if not provided).

    .PARAMETER Session
        Unraid session (defaults to current session).

    .EXAMPLE
        Stop-UnraidParityCheck
    #>

    [CmdletBinding(SupportsShouldProcess)]
    [OutputType('void')]
    param(
        [Parameter(ValueFromPipeline)]
        [UnraidArray]$Array,

        [Parameter()]
        [UnraidSession]$Session = $script:DefaultUnraidSession
    )

    process {
        if (!$Array) { $Array = Get-UnraidArray  }

        if ($Array.ParityStatus -notin @("RUNNING", "PAUSED")) {
            Write-Error "No active parity check found to cancel."
            return
        }

        if ($PSCmdlet.ShouldProcess("Unraid Array", "Cancel Parity Check")) {
            $gqlQuery = @"
            mutation CancelCheck {
                parityCheck {
                    cancel
                }
            }
"@

            $result = Invoke-UnraidQuery -Query $gqlQuery -Session $Session 

            if ($result) {
                Write-Information "Parity check canceled: Progress discarded." -InformationAction Continue
            }
        }
    }
}