Skip to content

Commit 4ab24b3

Browse files
authored
Merge pull request #436 from galexrt/skip_fields
feat: add generator skip option for table columns
2 parents f9ed359 + 60ba05b commit 4ab24b3

File tree

5 files changed

+73
-9
lines changed

5 files changed

+73
-9
lines changed

generator/template/file_templates.go

Lines changed: 10 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

generator/template/model_template.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ type TableModelField struct {
159159
Name string
160160
Type Type
161161
Tags []string
162+
Skip bool
162163
}
163164

164165
// DefaultTableModelField returns default TableModelField implementation
@@ -173,6 +174,7 @@ func DefaultTableModelField(columnMetaData metadata.Column) TableModelField {
173174
Name: dbidentifier.ToGoIdentifier(columnMetaData.Name),
174175
Type: getType(columnMetaData),
175176
Tags: tags,
177+
Skip: false,
176178
}
177179
}
178180

generator/template/process.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,17 @@ func processTableSQLBuilder(fileTypes, dirPath string,
217217
return insertedRowAlias(dialect)
218218
},
219219
"golangComment": formatGolangComment,
220+
"columnList": func(columns []metadata.Column) string {
221+
names := []string{}
222+
for _, col := range columns {
223+
bc := tableSQLBuilder.Column(col)
224+
if bc.Skip {
225+
continue
226+
}
227+
names = append(names, bc.Name+"Column")
228+
}
229+
return strings.Join(names, ", ")
230+
},
220231
})
221232
if err != nil {
222233
return fmt.Errorf("failed to generate table sql builder type %s: %w", tableSQLBuilder.TypeName, err)

generator/template/sql_builder_template.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ func (tb TableSQLBuilder) UseColumn(columnsFunc func(column metadata.Column) Tab
131131

132132
// TableSQLBuilderColumn is template for table sql builder column
133133
type TableSQLBuilderColumn struct {
134+
Skip bool
134135
Name string
135136
Type string
136137
}

tests/postgres/generator_template_test.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,55 @@ func TestGeneratorTemplate_SQLBuilder_ChangeColumnTypes(t *testing.T) {
479479
require.Contains(t, actor, "ActorID postgres.ColumnString")
480480
}
481481

482+
func TestGeneratorTemplate_Model_SQLBuilder_SkipColumn(t *testing.T) {
483+
err := postgres.Generate(
484+
tempTestDir,
485+
dbConnection,
486+
template.Default(postgres2.Dialect).
487+
UseSchema(func(schemaMetaData metadata.Schema) template.Schema {
488+
return template.DefaultSchema(schemaMetaData).
489+
UseSQLBuilder(template.DefaultSQLBuilder().
490+
UseTable(func(table metadata.Table) template.TableSQLBuilder {
491+
return template.DefaultTableSQLBuilder(table).
492+
UseColumn(func(column metadata.Column) template.TableSQLBuilderColumn {
493+
defaultColumn := template.DefaultTableSQLBuilderColumn(column)
494+
495+
if defaultColumn.Name == "FirstName" {
496+
defaultColumn.Skip = true
497+
}
498+
499+
return defaultColumn
500+
})
501+
}),
502+
).
503+
UseModel(template.DefaultModel().
504+
UseTable(func(table metadata.Table) template.TableModel {
505+
return template.DefaultTableModel(table).
506+
UseField(func(column metadata.Column) template.TableModelField {
507+
defaultColumn := template.DefaultTableModelField(column)
508+
509+
if defaultColumn.Name == "FirstName" {
510+
defaultColumn.Skip = true
511+
}
512+
513+
return defaultColumn
514+
})
515+
}),
516+
)
517+
}),
518+
)
519+
520+
require.Nil(t, err)
521+
522+
actorSql := file2.Exists(t, defaultActorSQLBuilderFilePath)
523+
require.NotContains(t, actorSql, "FirstName")
524+
require.Contains(t, actorSql, "ActorID")
525+
526+
actorModel := file2.Exists(t, defaultActorModelFilePath)
527+
require.NotContains(t, actorModel, "FirstName")
528+
require.Contains(t, actorModel, "ActorID")
529+
}
530+
482531
func TestRenameEnumValueName(t *testing.T) {
483532
err := postgres.Generate(
484533
tempTestDir,

0 commit comments

Comments
 (0)