Add FIELD Function, fix virtual columns

This commit is contained in:
Jonathan Jenne
2022-03-22 13:58:11 +01:00
parent efd2aeb775
commit ce78dea8cb
4 changed files with 67 additions and 23 deletions

View File

@@ -240,9 +240,11 @@ Namespace Templates
Return pTemplate
End If
For Each oTable In pTemplate.Tables
Dim oTemplate = CreateVirtualColumns(pTemplate, pTemplateConfig)
For Each oTable In oTemplate.Tables
For Each oColumn As Template.Column In oTable.Columns
Dim oConfig = pTemplateConfig.GetColumn(oColumn.Name, oTable.Name)
Dim oConfig As TemplateConfigItem = pTemplateConfig.GetColumn(oColumn.Name, oTable.Name)
If oConfig Is Nothing Then
oConfig = New TemplateConfigItem With {
@@ -255,6 +257,31 @@ Namespace Templates
Next
Next
Return oTemplate
End Function
Private Function CreateVirtualColumns(pTemplate As Template, pTemplateConfig As TemplateConfig) As Template
For Each oConfigItem In pTemplateConfig.Items
' Find the table that relates to this config item
Dim oTable = pTemplate.Tables.Where(Function(table) table.Name = oConfigItem.Table).FirstOrDefault()
If oTable Is Nothing Then
Logger.Warn("Table [{0}] for item [{1}] does exist in this Template!", oConfigItem.Table, oConfigItem.Name)
Continue For
End If
Dim oColumnExists = oTable.Columns.Any(Function(column) column.Name = oConfigItem.Name)
If oColumnExists = False And oConfigItem.IsVirtual = True Then
oTable.Columns.Add(New Template.Column() With {
.Name = oConfigItem.Name,
.Config = oConfigItem,
.DataType = Constants.ColumnType.String,
.IsRequired = False
})
End If
Next
Return pTemplate
End Function