Skip to content

Commit e5d4fba

Browse files
JordanPkyleconroy
andauthored
Customizable batch output file name (add OutputBatchFileName field) (#2178)
* Customizable batch output file name (add OutputBatchFileName field) This commit adds the possibility to customize the batch output file name. Example configuration: ``` version: "1" packages: - name: db path: internal/db queries: internal/db schema: migrations engine: postgresql output_batch_file_name: batch_gen.go output_models_file_name: model_gen.go ``` * test: Add tests for new batch filename config --------- Co-authored-by: Kyle Conroy <kyle@conroy.org>
1 parent 7e6c137 commit e5d4fba

File tree

22 files changed

+364
-127
lines changed

22 files changed

+364
-127
lines changed

docs/reference/config.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ The `gen` mapping supports the following keys:
113113
that returns all valid enum values.
114114
- `json_tags_case_style`:
115115
- `camel` for camelCase, `pascal` for PascalCase, `snake` for snake_case or `none` to use the column name in the DB. Defaults to `none`.
116+
- `output_batch_file_name`:
117+
- Customize the name of the batch file. Defaults to `batch.go`.
116118
- `output_db_file_name`:
117119
- Customize the name of the db file. Defaults to `db.go`.
118120
- `output_models_file_name`:
@@ -346,6 +348,7 @@ packages:
346348
emit_enum_valid_method: false
347349
emit_all_enum_values: false
348350
json_tags_case_style: "camel"
351+
output_batch_file_name: "batch.go"
349352
output_db_file_name: "db.go"
350353
output_models_file_name: "models.go"
351354
output_querier_file_name: "querier.go"
@@ -397,6 +400,8 @@ Each mapping in the `packages` collection has the following keys:
397400
that returns all valid enum values.
398401
- `json_tags_case_style`:
399402
- `camel` for camelCase, `pascal` for PascalCase, `snake` for snake_case or `none` to use the column name in the DB. Defaults to `none`.
403+
- `output_batch_file_name`:
404+
- Customize the name of the batch file. Defaults to `batch.go`.
400405
- `output_db_file_name`:
401406
- Customize the name of the db file. Defaults to `db.go`.
402407
- `output_models_file_name`:

internal/cmd/shim.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ func pluginGoCode(s config.SQLGo) *plugin.GoCode {
9999
Out: s.Out,
100100
SqlPackage: s.SQLPackage,
101101
OutputDbFileName: s.OutputDBFileName,
102+
OutputBatchFileName: s.OutputBatchFileName,
102103
OutputModelsFileName: s.OutputModelsFileName,
103104
OutputQuerierFileName: s.OutputQuerierFileName,
104105
OutputFilesSuffix: s.OutputFilesSuffix,

internal/codegen/golang/gen.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,9 @@ func generate(req *plugin.CodeGenRequest, enums []Enum, structs []Struct, querie
219219
// TODO(Jille): Make this configurable.
220220

221221
batchFileName := "batch.go"
222+
if golang.OutputBatchFileName != "" {
223+
batchFileName = golang.OutputBatchFileName
224+
}
222225

223226
if err := execute(dbFileName, "dbFile"); err != nil {
224227
return nil, err

internal/codegen/golang/imports.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ func (i *importer) Imports(filename string) [][]ImportSpec {
9191
}
9292
copyfromFileName := "copyfrom.go"
9393
batchFileName := "batch.go"
94+
if i.Settings.Go.OutputBatchFileName != "" {
95+
batchFileName = i.Settings.Go.OutputBatchFileName
96+
}
9497

9598
switch filename {
9699
case dbFileName:

internal/config/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ type SQLGo struct {
128128
Overrides []Override `json:"overrides,omitempty" yaml:"overrides"`
129129
Rename map[string]string `json:"rename,omitempty" yaml:"rename"`
130130
SQLPackage string `json:"sql_package" yaml:"sql_package"`
131+
OutputBatchFileName string `json:"output_batch_file_name,omitempty" yaml:"output_batch_file_name"`
131132
OutputDBFileName string `json:"output_db_file_name,omitempty" yaml:"output_db_file_name"`
132133
OutputModelsFileName string `json:"output_models_file_name,omitempty" yaml:"output_models_file_name"`
133134
OutputQuerierFileName string `json:"output_querier_file_name,omitempty" yaml:"output_querier_file_name"`

internal/config/v_one.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ type v1PackageSettings struct {
3838
JSONTagsCaseStyle string `json:"json_tags_case_style,omitempty" yaml:"json_tags_case_style"`
3939
SQLPackage string `json:"sql_package" yaml:"sql_package"`
4040
Overrides []Override `json:"overrides" yaml:"overrides"`
41+
OutputBatchFileName string `json:"output_batch_file_name,omitempty" yaml:"output_batch_file_name"`
4142
OutputDBFileName string `json:"output_db_file_name,omitempty" yaml:"output_db_file_name"`
4243
OutputModelsFileName string `json:"output_models_file_name,omitempty" yaml:"output_models_file_name"`
4344
OutputQuerierFileName string `json:"output_querier_file_name,omitempty" yaml:"output_querier_file_name"`
@@ -150,6 +151,7 @@ func (c *V1GenerateSettings) Translate() Config {
150151
SQLPackage: pkg.SQLPackage,
151152
Overrides: pkg.Overrides,
152153
JSONTagsCaseStyle: pkg.JSONTagsCaseStyle,
154+
OutputBatchFileName: pkg.OutputBatchFileName,
153155
OutputDBFileName: pkg.OutputDBFileName,
154156
OutputModelsFileName: pkg.OutputModelsFileName,
155157
OutputQuerierFileName: pkg.OutputQuerierFileName,

internal/endtoend/testdata/codegen_json/gen/codegen.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
"emit_all_enum_values": false,
3939
"inflection_exclude_table_names": [],
4040
"emit_pointers_for_null_types": false,
41-
"query_parameter_limit": 1
41+
"query_parameter_limit": 1,
42+
"output_batch_file_name": ""
4243
},
4344
"json": {
4445
"out": "gen",

internal/endtoend/testdata/output_file_names/pgx/v4/go/batch_gen.go

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

internal/endtoend/testdata/output_file_names/pgx/v4/go/db_gen.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/output_file_names/pgx/v4/go/querier_gen.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/output_file_names/pgx/v4/query.sql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@ CREATE TABLE "user" (id bigserial not null);
22

33
-- name: User :many
44
SELECT "user".* FROM "user";
5+
6+
-- name: UsersB :batchmany
7+
SELECT * FROM "user"
8+
WHERE id = $1;

internal/endtoend/testdata/output_file_names/pgx/v4/sqlc.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"schema": "query.sql",
1010
"queries": "query.sql",
1111
"emit_interface": true,
12+
"output_batch_file_name": "batch_gen.go",
1213
"output_db_file_name": "db_gen.go",
1314
"output_models_file_name": "models_gen.go",
1415
"output_querier_file_name": "querier_gen.go"

internal/endtoend/testdata/output_file_names/pgx/v5/go/batch_gen.go

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

internal/endtoend/testdata/output_file_names/pgx/v5/go/db_gen.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/output_file_names/pgx/v5/go/querier_gen.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/endtoend/testdata/output_file_names/pgx/v5/query.sql

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@ CREATE TABLE "user" (id bigserial not null);
22

33
-- name: User :many
44
SELECT "user".* FROM "user";
5+
6+
-- name: UsersB :batchmany
7+
SELECT * FROM "user"
8+
WHERE id = $1;

internal/endtoend/testdata/output_file_names/pgx/v5/sqlc.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"schema": "query.sql",
1010
"queries": "query.sql",
1111
"emit_interface": true,
12+
"output_batch_file_name": "batch_gen.go",
1213
"output_db_file_name": "db_gen.go",
1314
"output_models_file_name": "models_gen.go",
1415
"output_querier_file_name": "querier_gen.go"

internal/endtoend/testdata/process_plugin_disabled/gen/codegen.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
"emit_all_enum_values": false,
3939
"inflection_exclude_table_names": [],
4040
"emit_pointers_for_null_types": false,
41-
"query_parameter_limit": 1
41+
"query_parameter_limit": 1,
42+
"output_batch_file_name": ""
4243
},
4344
"json": {
4445
"out": "",

internal/endtoend/testdata/process_plugin_sqlc_gen_json/gen/codegen.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
"emit_all_enum_values": false,
3939
"inflection_exclude_table_names": [],
4040
"emit_pointers_for_null_types": false,
41-
"query_parameter_limit": 1
41+
"query_parameter_limit": 1,
42+
"output_batch_file_name": ""
4243
},
4344
"json": {
4445
"out": "",

0 commit comments

Comments
 (0)