From bbd83165d598729ec6b3aa6880e36f7a957dba43 Mon Sep 17 00:00:00 2001 From: Andreas Kutschera Date: Sat, 8 Oct 2022 15:47:52 +0200 Subject: [PATCH 1/2] fix: add override tags to result struct (#1867) --- internal/codegen/golang/result.go | 1 + .../overrides_result_tag/stdlib/go/db.go | 31 +++++++++++++++ .../overrides_result_tag/stdlib/go/models.go | 21 ++++++++++ .../stdlib/go/query.sql.go | 38 +++++++++++++++++++ .../overrides_result_tag/stdlib/query.sql | 20 ++++++++++ .../overrides_result_tag/stdlib/sqlc.yaml | 12 ++++++ 6 files changed, 123 insertions(+) create mode 100644 internal/endtoend/testdata/overrides_result_tag/stdlib/go/db.go create mode 100644 internal/endtoend/testdata/overrides_result_tag/stdlib/go/models.go create mode 100644 internal/endtoend/testdata/overrides_result_tag/stdlib/go/query.sql.go create mode 100644 internal/endtoend/testdata/overrides_result_tag/stdlib/query.sql create mode 100644 internal/endtoend/testdata/overrides_result_tag/stdlib/sqlc.yaml diff --git a/internal/codegen/golang/result.go b/internal/codegen/golang/result.go index 1ab01b4de0..c0fec4af77 100644 --- a/internal/codegen/golang/result.go +++ b/internal/codegen/golang/result.go @@ -306,6 +306,7 @@ func columnsToStruct(req *plugin.CodeGenRequest, name string, columns []goColumn if req.Settings.Go.EmitJsonTags { tags["json"] = JSONTagName(tagName, req.Settings) } + addExtraGoStructTags(tags, req, c.Column) gs.Fields = append(gs.Fields, Field{ Name: fieldName, DBName: colName, diff --git a/internal/endtoend/testdata/overrides_result_tag/stdlib/go/db.go b/internal/endtoend/testdata/overrides_result_tag/stdlib/go/db.go new file mode 100644 index 0000000000..5f69347d4b --- /dev/null +++ b/internal/endtoend/testdata/overrides_result_tag/stdlib/go/db.go @@ -0,0 +1,31 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.15.0 + +package querytest + +import ( + "context" + "database/sql" +) + +type DBTX interface { + ExecContext(context.Context, string, ...interface{}) (sql.Result, error) + PrepareContext(context.Context, string) (*sql.Stmt, error) + QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error) + QueryRowContext(context.Context, string, ...interface{}) *sql.Row +} + +func New(db DBTX) *Queries { + return &Queries{db: db} +} + +type Queries struct { + db DBTX +} + +func (q *Queries) WithTx(tx *sql.Tx) *Queries { + return &Queries{ + db: tx, + } +} diff --git a/internal/endtoend/testdata/overrides_result_tag/stdlib/go/models.go b/internal/endtoend/testdata/overrides_result_tag/stdlib/go/models.go new file mode 100644 index 0000000000..6341c729cb --- /dev/null +++ b/internal/endtoend/testdata/overrides_result_tag/stdlib/go/models.go @@ -0,0 +1,21 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.15.0 + +package querytest + +import ( + "database/sql" + + "github.com/google/uuid" +) + +type Account struct { + ID uuid.UUID `sometagtype:"some_value"` + State sql.NullString +} + +type UsersAccount struct { + Id2 uuid.UUID + Name sql.NullString +} diff --git a/internal/endtoend/testdata/overrides_result_tag/stdlib/go/query.sql.go b/internal/endtoend/testdata/overrides_result_tag/stdlib/go/query.sql.go new file mode 100644 index 0000000000..3dac76eed8 --- /dev/null +++ b/internal/endtoend/testdata/overrides_result_tag/stdlib/go/query.sql.go @@ -0,0 +1,38 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.15.0 +// source: query.sql + +package querytest + +import ( + "context" + "database/sql" + + "github.com/google/uuid" +) + +const findAccount = `-- name: FindAccount :one +SELECT + a.id, a.state, + ua.name + -- other fields +FROM + accounts a + INNER JOIN users_accounts ua ON a.id = ua.id2 +WHERE + a.id = $1 +` + +type FindAccountRow struct { + ID uuid.UUID `sometagtype:"some_value"` + State sql.NullString + Name sql.NullString +} + +func (q *Queries) FindAccount(ctx context.Context, accountID uuid.UUID) (FindAccountRow, error) { + row := q.db.QueryRowContext(ctx, findAccount, accountID) + var i FindAccountRow + err := row.Scan(&i.ID, &i.State, &i.Name) + return i, err +} diff --git a/internal/endtoend/testdata/overrides_result_tag/stdlib/query.sql b/internal/endtoend/testdata/overrides_result_tag/stdlib/query.sql new file mode 100644 index 0000000000..f6ec96af94 --- /dev/null +++ b/internal/endtoend/testdata/overrides_result_tag/stdlib/query.sql @@ -0,0 +1,20 @@ +CREATE TABLE public.accounts ( + id uuid DEFAULT public.uuid_generate_v4() NOT NULL, + state character varying +); + +CREATE TABLE public.users_accounts ( + ID2 uuid DEFAULT public.uuid_generate_v4() NOT NULL, + name character varying +); + +-- name: FindAccount :one +SELECT + a.*, + ua.name + -- other fields +FROM + accounts a + INNER JOIN users_accounts ua ON a.id = ua.id2 +WHERE + a.id = @account_id; \ No newline at end of file diff --git a/internal/endtoend/testdata/overrides_result_tag/stdlib/sqlc.yaml b/internal/endtoend/testdata/overrides_result_tag/stdlib/sqlc.yaml new file mode 100644 index 0000000000..032c4f7fc0 --- /dev/null +++ b/internal/endtoend/testdata/overrides_result_tag/stdlib/sqlc.yaml @@ -0,0 +1,12 @@ +version: "2" +sql: + - schema: "query.sql" + queries: "query.sql" + engine: "postgresql" + gen: + go: + package: "querytest" + out: "go" + overrides: + - column: accounts.id + go_struct_tag: sometagtype:"some_value" \ No newline at end of file From c3a2e26a9974cec93e8a6698cea8f98c0909800b Mon Sep 17 00:00:00 2001 From: Kyle Conroy Date: Wed, 7 Jun 2023 13:46:13 -0700 Subject: [PATCH 2/2] Update test output for latest version --- internal/endtoend/testdata/overrides_result_tag/stdlib/go/db.go | 2 +- .../endtoend/testdata/overrides_result_tag/stdlib/go/models.go | 2 +- .../testdata/overrides_result_tag/stdlib/go/query.sql.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/endtoend/testdata/overrides_result_tag/stdlib/go/db.go b/internal/endtoend/testdata/overrides_result_tag/stdlib/go/db.go index 5f69347d4b..8c5b31f933 100644 --- a/internal/endtoend/testdata/overrides_result_tag/stdlib/go/db.go +++ b/internal/endtoend/testdata/overrides_result_tag/stdlib/go/db.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.15.0 +// sqlc v1.18.0 package querytest diff --git a/internal/endtoend/testdata/overrides_result_tag/stdlib/go/models.go b/internal/endtoend/testdata/overrides_result_tag/stdlib/go/models.go index 6341c729cb..7badf0acf6 100644 --- a/internal/endtoend/testdata/overrides_result_tag/stdlib/go/models.go +++ b/internal/endtoend/testdata/overrides_result_tag/stdlib/go/models.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.15.0 +// sqlc v1.18.0 package querytest diff --git a/internal/endtoend/testdata/overrides_result_tag/stdlib/go/query.sql.go b/internal/endtoend/testdata/overrides_result_tag/stdlib/go/query.sql.go index 3dac76eed8..22bab7710c 100644 --- a/internal/endtoend/testdata/overrides_result_tag/stdlib/go/query.sql.go +++ b/internal/endtoend/testdata/overrides_result_tag/stdlib/go/query.sql.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.15.0 +// sqlc v1.18.0 // source: query.sql package querytest