Updated sql_builder_template to check if column is in a conflicted column name array and renames to {col}_ if it is a conflicting name. Added unit tests.

This commit is contained in:
johnflynn 2024-10-26 22:40:49 -04:00
parent e715b13615
commit 9f8732cd95
2 changed files with 36 additions and 1 deletions

View file

@ -5,6 +5,7 @@ import (
"github.com/go-jet/jet/v2/generator/metadata"
"github.com/go-jet/jet/v2/internal/utils/dbidentifier"
"path"
"slices"
"strings"
"unicode"
)
@ -134,10 +135,19 @@ type TableSQLBuilderColumn struct {
Type string
}
var reservedKeywords = []string{"TableName", "Table", "SchemaName", "Alias", "AllColumns", "MutableColumns"}
func renameIfReserved(name string) string {
if slices.Contains(reservedKeywords, name) {
return name + "_"
}
return name
}
// DefaultTableSQLBuilderColumn returns default implementation of TableSQLBuilderColumn
func DefaultTableSQLBuilderColumn(columnMetaData metadata.Column) TableSQLBuilderColumn {
return TableSQLBuilderColumn{
Name: dbidentifier.ToGoIdentifier(columnMetaData.Name),
Name: renameIfReserved(dbidentifier.ToGoIdentifier(columnMetaData.Name)),
Type: getSqlBuilderColumnType(columnMetaData),
}
}