Public/Remove-DuneResourceGroupTemplate.ps1

<#
.SYNOPSIS
Removes DuneResourceGroupTemplate object.
.DESCRIPTION
Removes DuneResourceGroupTemplate object.
.PARAMETER Id
Specifies the DuneResourceGroupTemplate id.
.PARAMETER ResourceGroupTemplate
Specifies the DuneResourceGroupTemplate object.
.INPUTS
DuneResourceGroupTemplate object.
.OUTPUTS
Invoke-WebRequest output.
.EXAMPLE
> Get-DuneResourceGroupTemplate foo | Remove-DuneResourceGroupTemplate
.LINK
https://gitlab.com/yendico1/products/starburst/backend-workflow/ps-modules/starburst/-/blob/main/Starburst/Public/Remove-DuneResourceGroupTemplate.ps1
#>

function Remove-DuneResourceGroupTemplate {
    [CmdletBinding(
        SupportsShouldProcess,
        ConfirmImpact = 'High',
        DefaultParameterSetName = 'Id'
    )]
    param (
        [Parameter(Mandatory, ParameterSetName = "Id")]
        [guid]$Id,

        [Parameter(Mandatory, ParameterSetName = "ResourceGroupTemplate", ValueFromPipeline)]
        [DuneResourceGroupTemplate]$ResourceGroupTemplate
    )

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

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

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