VaporShell.Athena.Classes.ps1

using namespace System
using namespace System.Collections
using namespace System.Collections.Generic
using namespace System.IO
using namespace System.Management.Automation
[CmdletBinding()]
Param()

Write-Verbose "Importing class 'AthenaWorkGroupWorkGroupConfiguration'"

class AthenaWorkGroupWorkGroupConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAthenaWorkGroupWorkGroupConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfiguration.html'

    hidden [object] $_bytesScannedCutoffPerQuery
    hidden [object] $_enforceWorkGroupConfiguration
    hidden [object] $_publishCloudWatchMetricsEnabled
    hidden [object] $_requesterPaysEnabled
    hidden [object] $_resultConfiguration
    hidden [object] $_engineVersion

    [int] $BytesScannedCutoffPerQuery
    [bool] $EnforceWorkGroupConfiguration
    [bool] $PublishCloudWatchMetricsEnabled
    [bool] $RequesterPaysEnabled
    [AthenaWorkGroupResultConfiguration] $ResultConfiguration
    [AthenaWorkGroupEngineVersion] $EngineVersion

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name BytesScannedCutoffPerQuery -Value {
            $this._bytesScannedCutoffPerQuery
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bytesScannedCutoffPerQuery = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnforceWorkGroupConfiguration -Value {
            $this._enforceWorkGroupConfiguration
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enforceWorkGroupConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PublishCloudWatchMetricsEnabled -Value {
            $this._publishCloudWatchMetricsEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._publishCloudWatchMetricsEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RequesterPaysEnabled -Value {
            $this._requesterPaysEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._requesterPaysEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResultConfiguration -Value {
            $this._resultConfiguration
        } -SecondValue {
            param([ValidateType(([AthenaWorkGroupResultConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resultConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EngineVersion -Value {
            $this._engineVersion
        } -SecondValue {
            param([ValidateType(([AthenaWorkGroupEngineVersion], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._engineVersion = $value
        }
    }

    AthenaWorkGroupWorkGroupConfiguration() : base() {}
    AthenaWorkGroupWorkGroupConfiguration([IDictionary] $props) : base($props) {}
    AthenaWorkGroupWorkGroupConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AthenaWorkGroupResultConfiguration'"

class AthenaWorkGroupResultConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAthenaWorkGroupResultConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-resultconfiguration.html'

    hidden [object] $_encryptionConfiguration
    hidden [object] $_outputLocation

    [AthenaWorkGroupEncryptionConfiguration] $EncryptionConfiguration
    [string] $OutputLocation

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name EncryptionConfiguration -Value {
            $this._encryptionConfiguration
        } -SecondValue {
            param([ValidateType(([AthenaWorkGroupEncryptionConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._encryptionConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OutputLocation -Value {
            $this._outputLocation
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._outputLocation = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AthenaWorkGroupResultConfiguration() : base() {}
    AthenaWorkGroupResultConfiguration([IDictionary] $props) : base($props) {}
    AthenaWorkGroupResultConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AthenaWorkGroupEncryptionConfiguration'"

class AthenaWorkGroupEncryptionConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAthenaWorkGroupEncryptionConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-encryptionconfiguration.html'

    hidden [object] $_encryptionOption
    hidden [object] $_kmsKey

    [string] $EncryptionOption
    [string] $KmsKey

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name EncryptionOption -Value {
            $this._encryptionOption
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._encryptionOption = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KmsKey -Value {
            $this._kmsKey
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._kmsKey = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AthenaWorkGroupEncryptionConfiguration() : base() {}
    AthenaWorkGroupEncryptionConfiguration([IDictionary] $props) : base($props) {}
    AthenaWorkGroupEncryptionConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AthenaWorkGroupEngineVersion'"

class AthenaWorkGroupEngineVersion : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAthenaWorkGroupEngineVersion'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-engineversion.html'

    hidden [object] $_selectedEngineVersion
    hidden [object] $_effectiveEngineVersion

    [string] $SelectedEngineVersion
    [string] $EffectiveEngineVersion

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name SelectedEngineVersion -Value {
            $this._selectedEngineVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._selectedEngineVersion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EffectiveEngineVersion -Value {
            $this._effectiveEngineVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._effectiveEngineVersion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    AthenaWorkGroupEngineVersion() : base() {}
    AthenaWorkGroupEngineVersion([IDictionary] $props) : base($props) {}
    AthenaWorkGroupEngineVersion([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AthenaWorkGroupWorkGroupConfigurationUpdates'"

class AthenaWorkGroupWorkGroupConfigurationUpdates : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAthenaWorkGroupWorkGroupConfigurationUpdates'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-workgroupconfigurationupdates.html'

    hidden [object] $_bytesScannedCutoffPerQuery
    hidden [object] $_enforceWorkGroupConfiguration
    hidden [object] $_publishCloudWatchMetricsEnabled
    hidden [object] $_requesterPaysEnabled
    hidden [object] $_resultConfigurationUpdates
    hidden [object] $_removeBytesScannedCutoffPerQuery
    hidden [object] $_engineVersion

    [int] $BytesScannedCutoffPerQuery
    [bool] $EnforceWorkGroupConfiguration
    [bool] $PublishCloudWatchMetricsEnabled
    [bool] $RequesterPaysEnabled
    [AthenaWorkGroupResultConfigurationUpdates] $ResultConfigurationUpdates
    [bool] $RemoveBytesScannedCutoffPerQuery
    [AthenaWorkGroupEngineVersion] $EngineVersion

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name BytesScannedCutoffPerQuery -Value {
            $this._bytesScannedCutoffPerQuery
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bytesScannedCutoffPerQuery = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EnforceWorkGroupConfiguration -Value {
            $this._enforceWorkGroupConfiguration
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._enforceWorkGroupConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name PublishCloudWatchMetricsEnabled -Value {
            $this._publishCloudWatchMetricsEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._publishCloudWatchMetricsEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RequesterPaysEnabled -Value {
            $this._requesterPaysEnabled
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._requesterPaysEnabled = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ResultConfigurationUpdates -Value {
            $this._resultConfigurationUpdates
        } -SecondValue {
            param([ValidateType(([AthenaWorkGroupResultConfigurationUpdates], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._resultConfigurationUpdates = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RemoveBytesScannedCutoffPerQuery -Value {
            $this._removeBytesScannedCutoffPerQuery
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._removeBytesScannedCutoffPerQuery = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EngineVersion -Value {
            $this._engineVersion
        } -SecondValue {
            param([ValidateType(([AthenaWorkGroupEngineVersion], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._engineVersion = $value
        }
    }

    AthenaWorkGroupWorkGroupConfigurationUpdates() : base() {}
    AthenaWorkGroupWorkGroupConfigurationUpdates([IDictionary] $props) : base($props) {}
    AthenaWorkGroupWorkGroupConfigurationUpdates([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AthenaWorkGroupResultConfigurationUpdates'"

class AthenaWorkGroupResultConfigurationUpdates : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSAthenaWorkGroupResultConfigurationUpdates'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-athena-workgroup-resultconfigurationupdates.html'

    hidden [object] $_encryptionConfiguration
    hidden [object] $_outputLocation
    hidden [object] $_removeEncryptionConfiguration
    hidden [object] $_removeOutputLocation

    [AthenaWorkGroupEncryptionConfiguration] $EncryptionConfiguration
    [string] $OutputLocation
    [bool] $RemoveEncryptionConfiguration
    [bool] $RemoveOutputLocation

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name EncryptionConfiguration -Value {
            $this._encryptionConfiguration
        } -SecondValue {
            param([ValidateType(([AthenaWorkGroupEncryptionConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._encryptionConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name OutputLocation -Value {
            $this._outputLocation
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._outputLocation = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RemoveEncryptionConfiguration -Value {
            $this._removeEncryptionConfiguration
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._removeEncryptionConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RemoveOutputLocation -Value {
            $this._removeOutputLocation
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._removeOutputLocation = $value
        }
    }

    AthenaWorkGroupResultConfigurationUpdates() : base() {}
    AthenaWorkGroupResultConfigurationUpdates([IDictionary] $props) : base($props) {}
    AthenaWorkGroupResultConfigurationUpdates([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AthenaDataCatalog'"

class AthenaDataCatalog : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAthenaDataCatalog'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-datacatalog.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Athena::DataCatalog'
    [string] $Name
    [string] $Description
    [string] $Parameters
    [VSTag[]] $Tags
    [string] $DataCatalogType
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Parameters -Value {
            $this.Properties['Parameters']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Parameters'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DataCatalogType -Value {
            $this.Properties['DataCatalogType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DataCatalogType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    AthenaDataCatalog() : base() {}
    AthenaDataCatalog([IDictionary] $props) : base($props) {}
    AthenaDataCatalog([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AthenaWorkGroup'"

class AthenaWorkGroup : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAthenaWorkGroup'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-workgroup.html'

    hidden [string[]] $_attributes = @('WorkGroupConfiguration.EngineVersion.EffectiveEngineVersion','CreationTime')
    hidden [object] $_condition

    [string] $Type = 'AWS::Athena::WorkGroup'
    [string] $Name
    [string] $Description
    [VSTag[]] $Tags
    [AthenaWorkGroupWorkGroupConfiguration] $WorkGroupConfiguration
    [string] $State
    [bool] $RecursiveDeleteOption
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WorkGroupConfiguration -Value {
            $this.Properties['WorkGroupConfiguration']
        } -SecondValue {
            param([ValidateType(([AthenaWorkGroupWorkGroupConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['WorkGroupConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name State -Value {
            $this.Properties['State']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['State'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name RecursiveDeleteOption -Value {
            $this.Properties['RecursiveDeleteOption']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['RecursiveDeleteOption'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    AthenaWorkGroup() : base() {}
    AthenaWorkGroup([IDictionary] $props) : base($props) {}
    AthenaWorkGroup([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AthenaPreparedStatement'"

class AthenaPreparedStatement : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAthenaPreparedStatement'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-preparedstatement.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::Athena::PreparedStatement'
    [string] $StatementName
    [string] $WorkGroup
    [string] $Description
    [string] $QueryStatement
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name StatementName -Value {
            $this.Properties['StatementName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StatementName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WorkGroup -Value {
            $this.Properties['WorkGroup']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['WorkGroup'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name QueryStatement -Value {
            $this.Properties['QueryStatement']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['QueryStatement'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    AthenaPreparedStatement() : base() {}
    AthenaPreparedStatement([IDictionary] $props) : base($props) {}
    AthenaPreparedStatement([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'AthenaNamedQuery'"

class AthenaNamedQuery : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSAthenaNamedQuery'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-athena-namedquery.html'

    hidden [string[]] $_attributes = @('NamedQueryId')
    hidden [object] $_condition

    [string] $Type = 'AWS::Athena::NamedQuery'
    [string] $Name
    [string] $Database
    [string] $Description
    [string] $QueryString
    [string] $WorkGroup
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Database -Value {
            $this.Properties['Database']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Database'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name QueryString -Value {
            $this.Properties['QueryString']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['QueryString'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WorkGroup -Value {
            $this.Properties['WorkGroup']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['WorkGroup'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    AthenaNamedQuery() : base() {}
    AthenaNamedQuery([IDictionary] $props) : base($props) {}
    AthenaNamedQuery([psobject] $props) : base($props) {}
}