feat: add generator skip option for table columns

Signed-off-by: Alexander Trost <galexrt@googlemail.com>
This commit is contained in:
Alexander Trost 2024-12-26 15:03:42 +01:00
parent f9ed359785
commit 60ba05b6fb
No known key found for this signature in database
GPG key ID: 5CF1D4600D4CBFDF
5 changed files with 73 additions and 9 deletions

View file

@ -11,13 +11,6 @@ var autoGenWarningTemplate = `
`
var tableSQLBuilderTemplate = `
{{define "column-list" -}}
{{- range $i, $c := . }}
{{- $field := columnField $c}}
{{- if gt $i 0 }}, {{end}}{{$field.Name}}Column
{{- end}}
{{- end}}
package {{package}}
import (
@ -33,7 +26,9 @@ type {{structImplName}} struct {
// Columns
{{- range $i, $c := .Columns}}
{{- $field := columnField $c}}
{{- if not $field.Skip}}
{{$field.Name}} {{dialect.PackageName}}.Column{{$field.Type}} {{golangComment .Comment}}
{{- end}}
{{- end}}
AllColumns {{dialect.PackageName}}.ColumnList
@ -77,10 +72,12 @@ func new{{tableTemplate.TypeName}}Impl(schemaName, tableName, alias string) {{st
var (
{{- range $i, $c := .Columns}}
{{- $field := columnField $c}}
{{- if not $field.Skip }}
{{$field.Name}}Column = {{dialect.PackageName}}.{{$field.Type}}Column("{{$c.Name}}")
{{- end}}
allColumns = {{dialect.PackageName}}.ColumnList{ {{template "column-list" .Columns}} }
mutableColumns = {{dialect.PackageName}}.ColumnList{ {{template "column-list" .MutableColumns}} }
{{- end}}
allColumns = {{dialect.PackageName}}.ColumnList{ {{columnList .Columns}} }
mutableColumns = {{dialect.PackageName}}.ColumnList{ {{columnList .MutableColumns}} }
)
return {{structImplName}}{
@ -89,7 +86,9 @@ func new{{tableTemplate.TypeName}}Impl(schemaName, tableName, alias string) {{st
//Columns
{{- range $i, $c := .Columns}}
{{- $field := columnField $c}}
{{- if not $field.Skip }}
{{$field.Name}}: {{$field.Name}}Column,
{{- end}}
{{- end}}
AllColumns: allColumns,
@ -124,7 +123,9 @@ import (
type {{$modelTableTemplate.TypeName}} struct {
{{- range .Columns}}
{{- $field := structField .}}
{{- if not $field.Skip}}
{{$field.Name}} {{$field.Type.Name}} ` + "{{$field.TagsString}}" + ` {{golangComment .Comment}}
{{- end }}
{{- end}}
}

View file

@ -159,6 +159,7 @@ type TableModelField struct {
Name string
Type Type
Tags []string
Skip bool
}
// DefaultTableModelField returns default TableModelField implementation
@ -173,6 +174,7 @@ func DefaultTableModelField(columnMetaData metadata.Column) TableModelField {
Name: dbidentifier.ToGoIdentifier(columnMetaData.Name),
Type: getType(columnMetaData),
Tags: tags,
Skip: false,
}
}

View file

@ -217,6 +217,17 @@ func processTableSQLBuilder(fileTypes, dirPath string,
return insertedRowAlias(dialect)
},
"golangComment": formatGolangComment,
"columnList": func(columns []metadata.Column) string {
names := []string{}
for _, col := range columns {
bc := tableSQLBuilder.Column(col)
if bc.Skip {
continue
}
names = append(names, bc.Name+"Column")
}
return strings.Join(names, ", ")
},
})
if err != nil {
return fmt.Errorf("failed to generate table sql builder type %s: %w", tableSQLBuilder.TypeName, err)

View file

@ -131,6 +131,7 @@ func (tb TableSQLBuilder) UseColumn(columnsFunc func(column metadata.Column) Tab
// TableSQLBuilderColumn is template for table sql builder column
type TableSQLBuilderColumn struct {
Skip bool
Name string
Type string
}