diff --git a/internal/config/config.go b/internal/config/config.go index 6e5c4db444..4cf194678c 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -114,7 +114,8 @@ type SQLGen struct { type SQLGo struct { EmitInterface bool `json:"emit_interface" yaml:"emit_interface"` EmitJSONTags bool `json:"emit_json_tags" yaml:"emit_json_tags"` - EmitPreparedQueries bool `json:"emit_prepared_queries" yaml:"emit_prepared_queries":` + EmitPreparedQueries bool `json:"emit_prepared_queries" yaml:"emit_prepared_queries"` + EmitExactTableNames bool `json:"emit_exact_table_names,omitempty" yaml:"emit_exact_table_names"` Package string `json:"package" yaml:"package"` Out string `json:"out" yaml:"out"` Overrides []Override `json:"overrides,omitempty" yaml:"overrides"` @@ -122,8 +123,9 @@ type SQLGo struct { } type SQLKotlin struct { - Package string `json:"package" yaml:"package"` - Out string `json:"out" yaml:"out"` + EmitExactTableNames bool `json:"emit_exact_table_names,omitempty" yaml:"emit_exact_table_names"` + Package string `json:"package" yaml:"package"` + Out string `json:"out" yaml:"out"` } type Override struct { diff --git a/internal/config/v_one.go b/internal/config/v_one.go index f50f8d627b..b359699c34 100644 --- a/internal/config/v_one.go +++ b/internal/config/v_one.go @@ -24,6 +24,7 @@ type v1PackageSettings struct { EmitInterface bool `json:"emit_interface" yaml:"emit_interface"` EmitJSONTags bool `json:"emit_json_tags" yaml:"emit_json_tags"` EmitPreparedQueries bool `json:"emit_prepared_queries" yaml:"emit_prepared_queries"` + EmitExactTableNames bool `json:"emit_exact_table_names,omitempty" yaml:"emit_exact_table_names"` Overrides []Override `json:"overrides" yaml:"overrides"` } @@ -103,6 +104,7 @@ func (c *V1GenerateSettings) Translate() Config { EmitInterface: pkg.EmitInterface, EmitJSONTags: pkg.EmitJSONTags, EmitPreparedQueries: pkg.EmitPreparedQueries, + EmitExactTableNames: pkg.EmitExactTableNames, Package: pkg.Name, Out: pkg.Path, Overrides: pkg.Overrides, diff --git a/internal/dinosql/gen.go b/internal/dinosql/gen.go index 3761db64e7..d264bdb022 100644 --- a/internal/dinosql/gen.go +++ b/internal/dinosql/gen.go @@ -595,9 +595,13 @@ func (r Result) Structs(settings config.CombinedSettings) []GoStruct { } else { tableName = name + "_" + table.Name } + structName := tableName + if !settings.Go.EmitExactTableNames { + structName = inflection.Singular(structName) + } s := GoStruct{ Table: core.FQN{Schema: name, Rel: table.Name}, - Name: StructName(inflection.Singular(tableName), settings), + Name: StructName(structName, settings), Comment: table.Comment, } for _, column := range table.Columns { diff --git a/internal/dinosql/kotlin/gen.go b/internal/dinosql/kotlin/gen.go index 0a2482bde5..0ceac6fb7e 100644 --- a/internal/dinosql/kotlin/gen.go +++ b/internal/dinosql/kotlin/gen.go @@ -446,9 +446,13 @@ func (r Result) KtDataClasses(settings config.CombinedSettings) []KtStruct { } else { tableName = name + "_" + table.Name } + structName := KtDataClassName(tableName, settings) + if !settings.Go.EmitExactTableNames { + structName = inflection.Singular(structName) + } s := KtStruct{ Table: core.FQN{Schema: name, Rel: table.Name}, - Name: inflection.Singular(KtDataClassName(tableName, settings)), + Name: structName, Comment: table.Comment, } for _, column := range table.Columns { diff --git a/internal/mysql/gen.go b/internal/mysql/gen.go index 17ebf51d54..637bedf11e 100644 --- a/internal/mysql/gen.go +++ b/internal/mysql/gen.go @@ -67,8 +67,12 @@ func (pGen PackageGenerator) enumNameFromColDef(col *sqlparser.ColumnDefinition) func (r *Result) Structs(settings config.CombinedSettings) []dinosql.GoStruct { var structs []dinosql.GoStruct for tableName, cols := range r.Schema.tables { + structName := dinosql.StructName(tableName, settings) + if !(settings.Go.EmitExactTableNames || settings.Kotlin.EmitExactTableNames) { + structName = inflection.Singular(structName) + } s := dinosql.GoStruct{ - Name: inflection.Singular(dinosql.StructName(tableName, settings)), + Name: structName, Table: core.FQN{tableName, "", ""}, // TODO: Complete hack. Only need for equality check to see if struct can be reused between queries }