src/cmdlets/common/QueryHelper.ps1
# Copyright 2019, 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 QueryHelper { static { function GetOrderQueryFromOrderByParameters($orderByParameters, [bool] $descendingDefault) { $sortColumns = switch($OrderByParameters.Gettype().name) { 'String' { @{$orderByParameters=$false} } 'HashTable' { $orderByParameters } 'object[]' { $normalized = @{} $orderByParameters | foreach { $normalized.Add($_, $descendingDefault)} $normalized } default { throw [ArgumentException]::new("OrderBy parameter was of invalid type '$_'. It must be of type 'String', 'String[]', or else a 'HashTable' structured like @{columname1=`$false|`$true;columname2=`$false|`$true} where `$false` indicates ascending order, `$true` descending") } } $columnEntries = $sortColumns.keys | foreach { if ( $_ -isnot [string] ) { throw [ArgumentException]::new("Specified sort column '$($_.tostring())' was of type '$($_.gettype())' instead of type 'String'") } $isDescending = $sortColumns[$_] if ( $isDescending -isnot [bool] ) { throw [ArgumentException]::new("Specified sort column '$($_.tostring())' was assigned invalid type '$($isDescending.gettype())' for direction -- it must be of type 'bool'") } $direction = if ( $isDescending ) { 'desc' } else { '' } '{0} {1}' -f $_, $direction } $columnEntries -join ',' } } } |