src/metadata/QualifiedSchema.ps1

# Copyright 2020, Adam Edwards
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

ScriptClass QualifiedSchema {
    $SchemaClass = $null
    $Namespace = $null
    $QualifiedName = $null
    $Schema = $null

    function __initialize($schemaClass, $namespace, $qualifiedOrUnqualifiedName, $schema) {
        if ( ! $namespace -or ! $qualifiedOrUnqualifiedName -or ! $schema ) {
            throw "Invalid qualified schema"
        }

        if ( $schemaClass -notin 'EntityType', 'EntitySet', 'ComplexType', 'Function', 'Action', 'Singleton', 'EnumType' ) {
            throw "Unknown schema class '$schemaClass'"
        }

        $this.SchemaClass = $schemaClass
        $this.Namespace = $namespace
        $this.QualifiedName = $namespace, ($qualifiedOrUnqualifiedName -split '\.' | select -last 1) -join '.'
        $this.Schema = $schema
    }
}