Pax8API/Private/New-Pax8SchemaTemplate.ps1
|
function New-Pax8SchemaTemplate { [CmdletBinding()] param ( [object]$Schema, [switch]$IncludeOptional, [switch]$IncludeReadOnly, [switch]$AsHashtable ) if ($null -eq $Schema) { return $null } $type = [string]$Schema.Type $properties = @($Schema.Properties) if ($properties.Count -gt 0 -or $type -eq 'object') { $template = [ordered]@{} foreach ($property in $properties) { if ($property.ReadOnly -and -not $IncludeReadOnly) { continue } if (-not $property.Required -and -not $IncludeOptional) { continue } $template[[string]$property.Name] = New-Pax8SchemaTemplate -Schema $property -IncludeOptional:$IncludeOptional -IncludeReadOnly:$IncludeReadOnly -AsHashtable:$AsHashtable } if ($AsHashtable) { return $template } return [pscustomobject]$template } if ($type -eq 'array') { if ($Schema.Items) { $items = @(New-Pax8SchemaTemplate -Schema $Schema.Items -IncludeOptional:$IncludeOptional -IncludeReadOnly:$IncludeReadOnly -AsHashtable:$AsHashtable) return ,$items } return ,@() } $enum = @($Schema.Enum) if ($enum.Count -gt 0) { return [string]$enum[0] } if ($null -ne $Schema.Default) { return $Schema.Default } if ($null -ne $Schema.Example) { return $Schema.Example } switch ([string]$Schema.Format) { 'uuid' { return [guid]::Empty } 'date' { return [datetime]'2000-01-01' } 'date-time' { return [datetime]'2000-01-01T00:00:00Z' } } switch ($type) { 'integer' { return 0 } 'number' { return 0.0 } 'boolean' { return $false } 'string' { return '' } default { return $null } } } |