Skip to content

Commit 947c430

Browse files
Export generated query for telemetry usage (#1054)
* add emit_exported_queries to config * change capitalization of query var name based on EmitExportedQueries * create tests for emit exported queries on pgx and stdlib drivers
1 parent f4eacef commit 947c430

File tree

14 files changed

+170
-1
lines changed

14 files changed

+170
-1
lines changed

internal/codegen/golang/result.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,9 +145,16 @@ func buildQueries(r *compiler.Result, settings config.CombinedSettings, structs
145145
continue
146146
}
147147

148+
var constantName string
149+
if settings.Go.EmitExportedQueries {
150+
constantName = codegen.Title(query.Name)
151+
} else {
152+
constantName = codegen.LowerTitle(query.Name)
153+
}
154+
148155
gq := Query{
149156
Cmd: query.Cmd,
150-
ConstantName: codegen.LowerTitle(query.Name),
157+
ConstantName: constantName,
151158
FieldName: codegen.LowerTitle(query.Name) + "Stmt",
152159
MethodName: query.Name,
153160
SourceName: query.Filename,

internal/codegen/utils.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ func LowerTitle(s string) string {
1111
return string(a)
1212
}
1313

14+
func Title(s string) string {
15+
return strings.Title(s)
16+
}
17+
1418
// Go string literals cannot contain backtick. If a string contains
1519
// a backtick, replace it the following way:
1620
//

internal/config/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ type SQLGo struct {
116116
EmitPreparedQueries bool `json:"emit_prepared_queries" yaml:"emit_prepared_queries"`
117117
EmitExactTableNames bool `json:"emit_exact_table_names,omitempty" yaml:"emit_exact_table_names"`
118118
EmitEmptySlices bool `json:"emit_empty_slices,omitempty" yaml:"emit_empty_slices"`
119+
EmitExportedQueries bool `json:"emit_exported_queries" yaml:"emit_exported_queries"`
119120
JSONTagsCaseStyle string `json:"json_tags_case_style,omitempty" yaml:"json_tags_case_style"`
120121
Package string `json:"package" yaml:"package"`
121122
Out string `json:"out" yaml:"out"`

internal/config/v_one.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ type v1PackageSettings struct {
2727
EmitPreparedQueries bool `json:"emit_prepared_queries" yaml:"emit_prepared_queries"`
2828
EmitExactTableNames bool `json:"emit_exact_table_names,omitempty" yaml:"emit_exact_table_names"`
2929
EmitEmptySlices bool `json:"emit_empty_slices,omitempty" yaml:"emit_empty_slices"`
30+
EmitExportedQueries bool `json:"emit_exported_queries,omitempty" yaml:"emit_exported_queries"`
3031
JSONTagsCaseStyle string `json:"json_tags_case_style,omitempty" yaml:"json_tags_case_style"`
3132
Driver string `json:"driver" yaml:"driver"`
3233
Overrides []Override `json:"overrides" yaml:"overrides"`
@@ -115,6 +116,7 @@ func (c *V1GenerateSettings) Translate() Config {
115116
EmitPreparedQueries: pkg.EmitPreparedQueries,
116117
EmitExactTableNames: pkg.EmitExactTableNames,
117118
EmitEmptySlices: pkg.EmitEmptySlices,
119+
EmitExportedQueries: pkg.EmitExportedQueries,
118120
Package: pkg.Name,
119121
Out: pkg.Path,
120122
Driver: pkg.Driver,

internal/endtoend/testdata/emit_exported_queries/pgx/go/db.go

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

internal/endtoend/testdata/emit_exported_queries/pgx/go/models.go

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

internal/endtoend/testdata/emit_exported_queries/pgx/go/query.sql.go

Lines changed: 22 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
CREATE TABLE bar (id serial not null);
2+
3+
-- name: UpdateBarID :exec
4+
UPDATE bar SET id = $1 WHERE id = $2;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"version": "1",
3+
"packages": [
4+
{
5+
"path": "go",
6+
"engine": "postgresql",
7+
"driver": "pgx/v4",
8+
"name": "querytest",
9+
"schema": "query.sql",
10+
"queries": "query.sql",
11+
"emit_exported_queries": true
12+
}
13+
]
14+
}

internal/endtoend/testdata/emit_exported_queries/stdlib/go/db.go

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

0 commit comments

Comments
 (0)