Public/functions/Reset-DssSecurity.ps1

function Reset-DssSecurity {
    <#
    .SYNOPSIS
        Resets the security on the specified databaase
    
    .PARAMETER SqlInstance

    .PARAMETER SqlCredential

    .PARAMETER TestResults

    .EXAMPLE


    #>

    [CmdletBinding(DefaultParameterSetName = "Default")]
    param (
        [string[]]$ConfigPath,
        [string]$SqlInstance,
        [PSCredential]$SqlCredential,
        [string]$Database,
        [switch]$UserConfig,
        [switch]$RoleConfig,
        [switch]$SchemaConfig,
        [switch]$ObjectConfig,
        [switch]$OutputOnly,
        [switch]$AddOnly,
        [switch]$RemoveOnly, 
        [object]$TestResults,
        [switch]$Quiet,
        [switch]$IncludeSystemObjects
    )
    begin{}
    process{}
    end{

        $configSwitch = $true
        if ($UserConfig -eq $True -or $SchemaConfig -eq $True -or $RoleConfig -eq $True -or $ObjectConfig -eq $True) {
            $configSwitch = $false
        }

        if ($UserConfig -eq $True -or $configSwitch) {
            Write-Verbose -Message "Resetting User config"
            $usersFixResults = Reset-DssUserSecurity -SqlInstance $SqlInstance -SqlCredential $SqlCredential -Database $database -TestResults $TestResults -OutputOnly:$OutputOnly -AddOnly:$AddOnly -RemoveOnly:$RemoveOnly
        } 
        if ($RoleConfig -eq $True -or $configSwitch) {
            Write-Verbose -Message "Resetting Role config - not implelemented yet"
            # $rolesFixResults = Invoke-Pester -Script @{ Path = "$Script:dssmoduleroot\Checks\Roles.Tests.ps1"; Parameters = @{SqlInstance = $sqlInstance; SqlCredential = $sqlCredential; Config = $config; Database = $database } } -PassThru -Show $show
        } 
        if ($SchemaConfig -eq $True -or $configSwitch) {
            Write-Verbose -Message "Resetting Schema config"
            $schemaFixResults = Reset-DssSchemaSecurity -SqlInstance $SqlInstance -SqlCredential $SqlCredential -Database $database -TestResults $TestResults -OutputOnly:$OutputOnly -AddOnly:$AddOnly -RemoveOnly:$RemoveOnly
        } 
        if ($ObjectConfig -eq $True -or $configSwitch) {
            Write-Verbose -Message "Resetting Object config - not implelemented yet"
            # $objectFixResults = Invoke-Pester -Script @{ Path = "$Script:dssmoduleroot\Checks\Objects.Tests.ps1"; Parameters = @{SqlInstance = $sqlInstance; SqlCredential = $sqlCredential; Config = $config; Database = $database } } -PassThru -Show $show
        }
 
        $usersFixResults
        $schemaFixResults


    }
}