internal/functions/generators/New-SldgStructuredData.ps1
|
function New-SldgStructuredData { <# .SYNOPSIS Generates JSON or XML structured data for columns. .DESCRIPTION When AI is configured and enabled, sends the column context (table name, column name, optional schema hint from views) to AI to infer the expected structure and generate realistic content. Falls back to static templates when AI is unavailable. Supports context-dependent generation: when ContextColumn and ContextValue are provided (e.g., ReportType = 'MailboxUsage'), AI generates structures that match the context, producing varied schemas per context value. For JSON: returns a valid JSON string. For XML: returns a valid XML string with a root element. #> [CmdletBinding()] param ( [ValidateSet('Json', 'Xml')] [string]$Type = 'Json', [string]$ColumnName, [string]$TableName, [string]$SchemaHint, [int]$MaxLength = 4000, [int]$Count = 1, [string]$AIGenerationHint, [string]$ContextColumn, [string]$ContextValue, [string[]]$ValueExamples ) $aiProvider = Get-PSFConfigValue -FullName 'SqlLabDataGenerator.AI.Provider' $useAI = Get-PSFConfigValue -FullName 'SqlLabDataGenerator.Generation.AIGeneration' for ($i = 0; $i -lt $Count; $i++) { $result = $null # Try AI generation when configured if ($useAI -and $aiProvider -ne 'None') { $aiParams = @{ Type = $Type ColumnName = $ColumnName TableName = $TableName SchemaHint = $SchemaHint MaxLength = $MaxLength } if ($AIGenerationHint) { $aiParams['AIGenerationHint'] = $AIGenerationHint } if ($ContextColumn) { $aiParams['ContextColumn'] = $ContextColumn } if ($ContextValue) { $aiParams['ContextValue'] = $ContextValue } if ($ValueExamples) { $aiParams['ValueExamples'] = $ValueExamples } $result = New-SldgAIStructuredValue @aiParams } # Static fallback if (-not $result) { $result = switch ($Type) { 'Json' { New-SldgStaticJson -ColumnName $ColumnName -TableName $TableName -MaxLength $MaxLength } 'Xml' { New-SldgStaticXml -ColumnName $ColumnName -TableName $TableName -MaxLength $MaxLength } } } $result } } |