Public/Remove-DuneResourceProvider.ps1

<#
.SYNOPSIS
Removes DuneResourceProvider object.
.DESCRIPTION
Removes DuneResourceProvider object.
.PARAMETER Name
Specifies the DuneResourceProvider name.
.PARAMETER Id
Specifies the DuneResourceProvider id.
.PARAMETER ResourceProvider
Specifies the DuneResourceProvider object.
.PARAMETER IncludeChildren
Specifies whether ResourceGroups/Resources belonging to that ResourceProvider are deleted as well.
.INPUTS
DuneResourceProvider object.
.OUTPUTS
Invoke-WebRequest output.
.EXAMPLE
> Remove-DuneResourceProvider -Name foo
.EXAMPLE
> Get-DuneResourceProvider foo | Remove-DuneResourceProvider
.EXAMPLE
> Get-DuneResourceProvider foo | Remove-DuneResourceProvider -IncludeChildren
.LINK
https://gitlab.com/yendico1/products/starburst/backend-workflow/ps-modules/starburst/-/blob/main/Starburst/Public/Remove-DuneResourceProvider.ps1
#>

function Remove-DuneResourceProvider {
    [CmdletBinding(
        SupportsShouldProcess,
        ConfirmImpact = 'High',
        DefaultParameterSetName = 'Id'
    )]
    param (
        [Parameter(Mandatory, ParameterSetName = "Name", Position = 0)]
        [string]$Name,

        [Parameter(Mandatory, ParameterSetName = "Id")]
        [guid]$Id,

        [Parameter(Mandatory, ParameterSetName = "ResourceProvider", ValueFromPipeline)]
        [DuneResourceProvider]$ResourceProvider,

        [Parameter()]
        [switch]$IncludeChildren
    )

    begin {
        Write-Debug "$($MyInvocation.MyCommand)|begin"
        $Uri = "resourceproviders"
    }

    process {
        Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)"
        switch ($PSCmdlet.ParameterSetName) {
            'Name' {
                Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)|$($Name)"
                $ResourceProvider = Get-DuneResourceProvider -Name $Name
            }
            'Id' {
                Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)|$($Id)"
                $ResourceProvider = Get-DuneResourceProvider -Id $Id
            }
            'ResourceProvider' {
                Write-Debug "$($MyInvocation.MyCommand)|process|$($PSCmdlet.ParameterSetName)|$($ResourceProvider.Id)"
            }
            Default {
                return
            }
        }
        $Url = $("{0}/{1}" -f $Uri, $ResourceProvider.Id)
        if ($PSCmdlet.ShouldProcess($ResourceProvider.Name)) {
            if ($IncludeChildren) {
                $ResourceProvider | Get-DuneResourceGroup | Remove-DuneResourceGroup -IncludeChildren
            }
            $Null = Invoke-DuneApiRequest $Url -Method DELETE
        }
    }

    end {
        Write-Debug "$($MyInvocation.MyCommand)|end"
    }
}