Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions internal/codegen/golang/opts/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,23 @@ func parseGlobalOpts(req *plugin.GenerateRequest) (*GlobalOptions, error) {
return nil, err
}
}

// A global override that names an engine only applies to that engine. The
// config requires `engine` on global overrides whenever more than one
// engine is in use, so without this filter every generated package would
// pick up whichever rule happened to be listed first and the last struct
// tag, regardless of the engine being generated.
engine := req.Settings.GetEngine()
if engine != "" {
filtered := make([]Override, 0, len(options.Overrides))
for _, override := range options.Overrides {
if override.Engine != "" && override.Engine != engine {
continue
}
filtered = append(filtered, override)
}
options.Overrides = filtered
}
return &options, nil
}

Expand Down
31 changes: 31 additions & 0 deletions internal/endtoend/testdata/overrides_global_engine/mysql/db.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

15 changes: 15 additions & 0 deletions internal/endtoend/testdata/overrides_global_engine/mysql/models.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions internal/endtoend/testdata/overrides_global_engine/query.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
-- name: FindEntry :one
SELECT id, value, code FROM entries
WHERE value = sqlc.arg(value) AND code = sqlc.arg(code);
5 changes: 5 additions & 0 deletions internal/endtoend/testdata/overrides_global_engine/schema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
CREATE TABLE entries (
id integer NOT NULL,
value text NOT NULL,
code text NOT NULL
);
53 changes: 53 additions & 0 deletions internal/endtoend/testdata/overrides_global_engine/sqlc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
version: "2"
overrides:
go:
overrides:
- db_type: text
engine: postgresql
go_type: string
go_struct_tag: 'backend:"postgresql"'
- db_type: text
engine: mysql
go_type: "database/sql.NullString"
go_struct_tag: 'backend:"mysql"'
- db_type: text
engine: sqlite
go_type:
type: byte
slice: true
go_struct_tag: 'backend:"sqlite"'
- column: entries.code
engine: postgresql
go_type:
import: encoding/json
type: RawMessage
- column: entries.code
engine: mysql
go_type:
type: byte
slice: true
- column: entries.code
engine: sqlite
go_type: string
sql:
- engine: postgresql
schema: schema.sql
queries: query.sql
gen:
go:
package: pg
out: postgresql
- engine: mysql
schema: schema.sql
queries: query.sql
gen:
go:
package: mysql
out: mysql
- engine: sqlite
schema: schema.sql
queries: query.sql
gen:
go:
package: sqlite
out: sqlite
31 changes: 31 additions & 0 deletions internal/endtoend/testdata/overrides_global_engine/sqlite/db.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading