From 37d14e943346933764b1396998ad125a1139331c Mon Sep 17 00:00:00 2001 From: Jesse Michael Date: Wed, 10 Jan 2024 22:38:52 -0700 Subject: [PATCH] feat: add "use_interface_return_types" option Add an option to direct sqlc generation to use the querier interface for the return type of the WithTx method on the Queries struct. Include WithTx in the Querier interface (when "emit_methods_with_db_argument" is false) --- docs/reference/config.md | 2 ++ examples/batch/postgresql/querier.go | 2 ++ examples/ondeck/mysql/querier.go | 1 + examples/ondeck/postgresql/querier.go | 2 ++ examples/ondeck/sqlite/querier.go | 1 + internal/codegen/golang/gen.go | 2 ++ internal/codegen/golang/imports.go | 10 ++++++ internal/codegen/golang/opts/options.go | 1 + .../codegen/golang/templates/pgx/dbCode.tmpl | 4 +++ .../golang/templates/pgx/interfaceCode.tmpl | 5 +++ .../golang/templates/stdlib/dbCode.tmpl | 4 +++ .../templates/stdlib/interfaceCode.tmpl | 7 ++++ internal/config/v_one.go | 2 ++ internal/config/v_one.json | 3 ++ internal/config/v_two.json | 3 ++ .../postgresql/stdlib/go/querier.go | 2 ++ .../copyfrom/postgresql/pgx/v4/go/querier.go | 3 ++ .../copyfrom/postgresql/pgx/v5/go/querier.go | 2 ++ .../postgresql/pgx/v4/go/querier.go | 3 ++ .../postgresql/pgx/v5/go/querier.go | 3 ++ .../mysql/go/querier.go | 1 + .../postgresql/stdlib/go/querier.go | 2 ++ .../exec_imports/pgx/v4/go/querier.go | 3 ++ .../exec_imports/pgx/v5/go/querier.go | 3 ++ .../exec_imports/stdlib/go/querier.go | 2 ++ .../go_postgresql_stdlib/go/querier.go | 2 ++ .../go_postgresql_pgx/v4/go/querier.go | 2 ++ .../go_postgresql_pgx/v5/go/querier.go | 2 ++ .../go_postgresql_stdlib/go/querier.go | 1 + .../go_postgresql_pgx/v4/go/querier.go | 3 ++ .../go_postgresql_pgx/v5/go/querier.go | 3 ++ .../go_postgresql_stdlib/go/querier.go | 2 ++ .../pgx/v4/go/querier_gen.go | 3 ++ .../pgx/v5/go/querier_gen.go | 3 ++ .../stdlib/go/querier_gen.go | 2 ++ .../postgresql/go/querier.go | 1 + .../postgresql/go/querier.go | 2 ++ .../unnest/postgresql/pgx/v4/go/querier.go | 2 ++ .../unnest/postgresql/pgx/v5/go/querier.go | 2 ++ .../unnest/postgresql/stdlib/go/querier.go | 2 ++ .../postgresql/pgx/v4/go/querier.go | 3 ++ .../postgresql/pgx/v5/go/querier.go | 3 ++ .../postgresql/stdlib/go/querier.go | 2 ++ .../pgx/v4/go/db.go | 32 +++++++++++++++++++ .../pgx/v4/go/models.go | 14 ++++++++ .../pgx/v4/go/querier.go | 19 +++++++++++ .../pgx/v4/go/query.sql.go | 30 +++++++++++++++++ .../pgx/v4/query.sql | 7 ++++ .../pgx/v4/schema.sql | 2 ++ .../pgx/v4/sqlc.json | 15 +++++++++ .../pgx/v5/go/db.go | 32 +++++++++++++++++++ .../pgx/v5/go/models.go | 14 ++++++++ .../pgx/v5/go/querier.go | 19 +++++++++++ .../pgx/v5/go/query.sql.go | 30 +++++++++++++++++ .../pgx/v5/query.sql | 7 ++++ .../pgx/v5/schema.sql | 2 ++ .../pgx/v5/sqlc.json | 15 +++++++++ .../stdlib/go/db.go | 31 ++++++++++++++++++ .../stdlib/go/models.go | 14 ++++++++ .../stdlib/go/querier.go | 18 +++++++++++ .../stdlib/go/query.sql.go | 30 +++++++++++++++++ .../stdlib/query.sql | 7 ++++ .../stdlib/schema.sql | 2 ++ .../stdlib/sqlc.json | 13 ++++++++ 64 files changed, 466 insertions(+) create mode 100644 internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/db.go create mode 100644 internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/models.go create mode 100644 internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/querier.go create mode 100644 internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/query.sql.go create mode 100644 internal/endtoend/testdata/use_interface_return_types/pgx/v4/query.sql create mode 100644 internal/endtoend/testdata/use_interface_return_types/pgx/v4/schema.sql create mode 100644 internal/endtoend/testdata/use_interface_return_types/pgx/v4/sqlc.json create mode 100644 internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/db.go create mode 100644 internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/models.go create mode 100644 internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/querier.go create mode 100644 internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/query.sql.go create mode 100644 internal/endtoend/testdata/use_interface_return_types/pgx/v5/query.sql create mode 100644 internal/endtoend/testdata/use_interface_return_types/pgx/v5/schema.sql create mode 100644 internal/endtoend/testdata/use_interface_return_types/pgx/v5/sqlc.json create mode 100644 internal/endtoend/testdata/use_interface_return_types/stdlib/go/db.go create mode 100644 internal/endtoend/testdata/use_interface_return_types/stdlib/go/models.go create mode 100644 internal/endtoend/testdata/use_interface_return_types/stdlib/go/querier.go create mode 100644 internal/endtoend/testdata/use_interface_return_types/stdlib/go/query.sql.go create mode 100644 internal/endtoend/testdata/use_interface_return_types/stdlib/query.sql create mode 100644 internal/endtoend/testdata/use_interface_return_types/stdlib/schema.sql create mode 100644 internal/endtoend/testdata/use_interface_return_types/stdlib/sqlc.json diff --git a/docs/reference/config.md b/docs/reference/config.md index 85e68cf05b..8a50414efb 100644 --- a/docs/reference/config.md +++ b/docs/reference/config.md @@ -141,6 +141,8 @@ The `gen` mapping supports the following keys: - If true, include support for prepared queries. Defaults to `false`. - `emit_interface`: - If true, output a `Querier` interface in the generated package. Defaults to `false`. +- `use_interface_return_types`: + - If true, output will use the `Querier` interface as the return type the methods in the generated package. Defaults to `false`. - `emit_exact_table_names`: - If true, struct names will mirror table names. Otherwise, sqlc attempts to singularize plural table names. Defaults to `false`. - `emit_empty_slices`: diff --git a/examples/batch/postgresql/querier.go b/examples/batch/postgresql/querier.go index ea7fd30bb0..143511f85c 100644 --- a/examples/batch/postgresql/querier.go +++ b/examples/batch/postgresql/querier.go @@ -7,10 +7,12 @@ package batch import ( "context" + "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgconn" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries BooksByYear(ctx context.Context, year []int32) *BooksByYearBatchResults CreateAuthor(ctx context.Context, name string) (Author, error) CreateBook(ctx context.Context, arg []CreateBookParams) *CreateBookBatchResults diff --git a/examples/ondeck/mysql/querier.go b/examples/ondeck/mysql/querier.go index 89b988c14e..2335c5cc85 100644 --- a/examples/ondeck/mysql/querier.go +++ b/examples/ondeck/mysql/querier.go @@ -10,6 +10,7 @@ import ( ) type Querier interface { + WithTx(tx *sql.Tx) *Queries CreateCity(ctx context.Context, arg CreateCityParams) error CreateVenue(ctx context.Context, arg CreateVenueParams) (sql.Result, error) DeleteVenue(ctx context.Context, arg DeleteVenueParams) error diff --git a/examples/ondeck/postgresql/querier.go b/examples/ondeck/postgresql/querier.go index e55682355f..1242909b35 100644 --- a/examples/ondeck/postgresql/querier.go +++ b/examples/ondeck/postgresql/querier.go @@ -6,9 +6,11 @@ package ondeck import ( "context" + "database/sql" ) type Querier interface { + WithTx(tx *sql.Tx) *Queries // Create a new city. The slug must be unique. // This is the second line of the comment // This is the third line diff --git a/examples/ondeck/sqlite/querier.go b/examples/ondeck/sqlite/querier.go index 89b988c14e..2335c5cc85 100644 --- a/examples/ondeck/sqlite/querier.go +++ b/examples/ondeck/sqlite/querier.go @@ -10,6 +10,7 @@ import ( ) type Querier interface { + WithTx(tx *sql.Tx) *Queries CreateCity(ctx context.Context, arg CreateCityParams) error CreateVenue(ctx context.Context, arg CreateVenueParams) (sql.Result, error) DeleteVenue(ctx context.Context, arg DeleteVenueParams) error diff --git a/internal/codegen/golang/gen.go b/internal/codegen/golang/gen.go index cbb86857b1..0745e746aa 100644 --- a/internal/codegen/golang/gen.go +++ b/internal/codegen/golang/gen.go @@ -39,6 +39,7 @@ type tmplCtx struct { EmitAllEnumValues bool UsesCopyFrom bool UsesBatch bool + UseInterfaceReturnTypes bool OmitSqlcVersion bool BuildTags string } @@ -169,6 +170,7 @@ func generate(req *plugin.GenerateRequest, options *opts.Options, enums []Enum, tctx := tmplCtx{ EmitInterface: options.EmitInterface, + UseInterfaceReturnTypes: options.UseInterfaceReturnTypes, EmitJSONTags: options.EmitJsonTags, JsonTagsIDUppercase: options.JsonTagsIdUppercase, EmitDBTags: options.EmitDbTags, diff --git a/internal/codegen/golang/imports.go b/internal/codegen/golang/imports.go index caa96ffe26..a0f9d4c4d9 100644 --- a/internal/codegen/golang/imports.go +++ b/internal/codegen/golang/imports.go @@ -263,6 +263,16 @@ func (i *importer) interfaceImports() fileImports { std["context"] = struct{}{} + sqlpkg := parseDriver(i.Options.SqlPackage) + switch sqlpkg { + case SQLDriverPGXV4: + pkg[ImportSpec{Path: "github.com/jackc/pgx/v4"}] = struct{}{} + case SQLDriverPGXV5: + pkg[ImportSpec{Path: "github.com/jackc/pgx/v5"}] = struct{}{} + default: + std["database/sql"] = struct{}{} + } + return sortedImports(std, pkg) } diff --git a/internal/codegen/golang/opts/options.go b/internal/codegen/golang/opts/options.go index 0b66975506..461eac1069 100644 --- a/internal/codegen/golang/opts/options.go +++ b/internal/codegen/golang/opts/options.go @@ -11,6 +11,7 @@ import ( type Options struct { EmitInterface bool `json:"emit_interface" yaml:"emit_interface"` + UseInterfaceReturnTypes bool `json:"use_interface_return_types" yaml:"use_interface_return_types"` EmitJsonTags bool `json:"emit_json_tags" yaml:"emit_json_tags"` JsonTagsIdUppercase bool `json:"json_tags_id_uppercase" yaml:"json_tags_id_uppercase"` EmitDbTags bool `json:"emit_db_tags" yaml:"emit_db_tags"` diff --git a/internal/codegen/golang/templates/pgx/dbCode.tmpl b/internal/codegen/golang/templates/pgx/dbCode.tmpl index 236554d9f2..307c74cfaa 100644 --- a/internal/codegen/golang/templates/pgx/dbCode.tmpl +++ b/internal/codegen/golang/templates/pgx/dbCode.tmpl @@ -28,7 +28,11 @@ type Queries struct { } {{if not .EmitMethodsWithDBArgument}} +{{- if and .EmitInterface .UseInterfaceReturnTypes}} +func (q *Queries) WithTx(tx pgx.Tx) Querier { +{{- else -}} func (q *Queries) WithTx(tx pgx.Tx) *Queries { +{{- end}} return &Queries{ db: tx, } diff --git a/internal/codegen/golang/templates/pgx/interfaceCode.tmpl b/internal/codegen/golang/templates/pgx/interfaceCode.tmpl index cf7cd36cb9..f91bf9e756 100644 --- a/internal/codegen/golang/templates/pgx/interfaceCode.tmpl +++ b/internal/codegen/golang/templates/pgx/interfaceCode.tmpl @@ -1,5 +1,10 @@ {{define "interfaceCodePgx"}} type Querier interface { + {{- if .UseInterfaceReturnTypes}} + WithTx(tx pgx.Tx) Querier + {{- else -}} + WithTx(tx pgx.Tx) *Queries + {{- end}} {{- $dbtxParam := .EmitMethodsWithDBArgument -}} {{- range .GoQueries}} {{- if and (eq .Cmd ":one") ($dbtxParam) }} diff --git a/internal/codegen/golang/templates/stdlib/dbCode.tmpl b/internal/codegen/golang/templates/stdlib/dbCode.tmpl index 7433d522f6..c190956abc 100644 --- a/internal/codegen/golang/templates/stdlib/dbCode.tmpl +++ b/internal/codegen/golang/templates/stdlib/dbCode.tmpl @@ -90,7 +90,11 @@ type Queries struct { } {{if not .EmitMethodsWithDBArgument}} +{{- if and .EmitInterface .UseInterfaceReturnTypes}} +func (q *Queries) WithTx(tx *sql.Tx) Querier { +{{- else -}} func (q *Queries) WithTx(tx *sql.Tx) *Queries { +{{- end}} return &Queries{ db: tx, {{- if .EmitPreparedQueries}} diff --git a/internal/codegen/golang/templates/stdlib/interfaceCode.tmpl b/internal/codegen/golang/templates/stdlib/interfaceCode.tmpl index 3cbefe6df4..906fea82e6 100644 --- a/internal/codegen/golang/templates/stdlib/interfaceCode.tmpl +++ b/internal/codegen/golang/templates/stdlib/interfaceCode.tmpl @@ -1,5 +1,12 @@ {{define "interfaceCodeStd"}} type Querier interface { + {{if not .EmitMethodsWithDBArgument}} + {{- if .UseInterfaceReturnTypes}} + WithTx(tx *sql.Tx) Querier + {{- else -}} + WithTx(tx *sql.Tx) *Queries + {{- end}} + {{- end}} {{- $dbtxParam := .EmitMethodsWithDBArgument -}} {{- range .GoQueries}} {{- if and (eq .Cmd ":one") ($dbtxParam) }} diff --git a/internal/config/v_one.go b/internal/config/v_one.go index 8efa9f42fc..028f8deea4 100644 --- a/internal/config/v_one.go +++ b/internal/config/v_one.go @@ -28,6 +28,7 @@ type v1PackageSettings struct { Schema Paths `json:"schema" yaml:"schema"` Queries Paths `json:"queries" yaml:"queries"` EmitInterface bool `json:"emit_interface" yaml:"emit_interface"` + UseInterfaceReturnTypes bool `json:"use_interface_return_types" yaml:"use_interface_return_types"` EmitJSONTags bool `json:"emit_json_tags" yaml:"emit_json_tags"` JsonTagsIDUppercase bool `json:"json_tags_id_uppercase" yaml:"json_tags_id_uppercase"` EmitDBTags bool `json:"emit_db_tags" yaml:"emit_db_tags"` @@ -138,6 +139,7 @@ func (c *V1GenerateSettings) Translate() Config { Gen: SQLGen{ Go: &golang.Options{ EmitInterface: pkg.EmitInterface, + UseInterfaceReturnTypes: pkg.UseInterfaceReturnTypes, EmitJsonTags: pkg.EmitJSONTags, JsonTagsIdUppercase: pkg.JsonTagsIDUppercase, EmitDbTags: pkg.EmitDBTags, diff --git a/internal/config/v_one.json b/internal/config/v_one.json index a0667a7c9c..de9dbfd36d 100644 --- a/internal/config/v_one.json +++ b/internal/config/v_one.json @@ -92,6 +92,9 @@ "emit_interface": { "type": "boolean" }, + "use_interface_return_types": { + "type": "boolean" + }, "emit_json_tags": { "type": "boolean" }, diff --git a/internal/config/v_two.json b/internal/config/v_two.json index acf914997d..105b3e7907 100644 --- a/internal/config/v_two.json +++ b/internal/config/v_two.json @@ -101,6 +101,9 @@ "emit_interface": { "type": "boolean" }, + "use_interface_return_types": { + "type": "boolean" + }, "emit_json_tags": { "type": "boolean" }, diff --git a/internal/endtoend/testdata/build_tags/postgresql/stdlib/go/querier.go b/internal/endtoend/testdata/build_tags/postgresql/stdlib/go/querier.go index b82113536a..8dda8b4656 100644 --- a/internal/endtoend/testdata/build_tags/postgresql/stdlib/go/querier.go +++ b/internal/endtoend/testdata/build_tags/postgresql/stdlib/go/querier.go @@ -8,9 +8,11 @@ package authors import ( "context" + "database/sql" ) type Querier interface { + WithTx(tx *sql.Tx) *Queries CreateAuthor(ctx context.Context, arg CreateAuthorParams) (Author, error) DeleteAuthor(ctx context.Context, id int64) error GetAuthor(ctx context.Context, id int64) (Author, error) diff --git a/internal/endtoend/testdata/copyfrom/postgresql/pgx/v4/go/querier.go b/internal/endtoend/testdata/copyfrom/postgresql/pgx/v4/go/querier.go index b924cb1717..aef63d72a1 100644 --- a/internal/endtoend/testdata/copyfrom/postgresql/pgx/v4/go/querier.go +++ b/internal/endtoend/testdata/copyfrom/postgresql/pgx/v4/go/querier.go @@ -7,9 +7,12 @@ package querytest import ( "context" "database/sql" + + "github.com/jackc/pgx/v4" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries // InsertSingleValue inserts a single value using copy. InsertSingleValue(ctx context.Context, a []sql.NullString) (int64, error) // InsertValues inserts multiple values using copy. diff --git a/internal/endtoend/testdata/copyfrom/postgresql/pgx/v5/go/querier.go b/internal/endtoend/testdata/copyfrom/postgresql/pgx/v5/go/querier.go index 1ee2fa0e88..61bfb81a1a 100644 --- a/internal/endtoend/testdata/copyfrom/postgresql/pgx/v5/go/querier.go +++ b/internal/endtoend/testdata/copyfrom/postgresql/pgx/v5/go/querier.go @@ -7,10 +7,12 @@ package querytest import ( "context" + "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgtype" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries // InsertSingleValue inserts a single value using copy. InsertSingleValue(ctx context.Context, a []pgtype.Text) (int64, error) // InsertValues inserts multiple values using copy. diff --git a/internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v4/go/querier.go b/internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v4/go/querier.go index eadc6f6849..d5c5399694 100644 --- a/internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v4/go/querier.go +++ b/internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v4/go/querier.go @@ -6,9 +6,12 @@ package querytest import ( "context" + + "github.com/jackc/pgx/v4" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries CreateAuthors(ctx context.Context, authorID []int32) (int64, error) } diff --git a/internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v5/go/querier.go b/internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v5/go/querier.go index eadc6f6849..940ba9b5c8 100644 --- a/internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v5/go/querier.go +++ b/internal/endtoend/testdata/copyfrom_singlecolumn/postgresql/pgx/v5/go/querier.go @@ -6,9 +6,12 @@ package querytest import ( "context" + + "github.com/jackc/pgx/v5" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries CreateAuthors(ctx context.Context, authorID []int32) (int64, error) } diff --git a/internal/endtoend/testdata/emit_result_and_params_struct_pointers/mysql/go/querier.go b/internal/endtoend/testdata/emit_result_and_params_struct_pointers/mysql/go/querier.go index 55eb728a1f..cba82dccac 100644 --- a/internal/endtoend/testdata/emit_result_and_params_struct_pointers/mysql/go/querier.go +++ b/internal/endtoend/testdata/emit_result_and_params_struct_pointers/mysql/go/querier.go @@ -10,6 +10,7 @@ import ( ) type Querier interface { + WithTx(tx *sql.Tx) *Queries GetAll(ctx context.Context) ([]*Foo, error) GetAllAByB(ctx context.Context, b sql.NullInt32) ([]sql.NullInt32, error) GetOne(ctx context.Context, arg *GetOneParams) (*Foo, error) diff --git a/internal/endtoend/testdata/enum_ordering/postgresql/stdlib/go/querier.go b/internal/endtoend/testdata/enum_ordering/postgresql/stdlib/go/querier.go index 7af6fb9ed2..be8968d516 100644 --- a/internal/endtoend/testdata/enum_ordering/postgresql/stdlib/go/querier.go +++ b/internal/endtoend/testdata/enum_ordering/postgresql/stdlib/go/querier.go @@ -6,9 +6,11 @@ package db import ( "context" + "database/sql" ) type Querier interface { + WithTx(tx *sql.Tx) *Queries GetAll(ctx context.Context) ([]int32, error) } diff --git a/internal/endtoend/testdata/exec_imports/pgx/v4/go/querier.go b/internal/endtoend/testdata/exec_imports/pgx/v4/go/querier.go index 265b9b5876..53200bb5a1 100644 --- a/internal/endtoend/testdata/exec_imports/pgx/v4/go/querier.go +++ b/internal/endtoend/testdata/exec_imports/pgx/v4/go/querier.go @@ -6,9 +6,12 @@ package querytest import ( "context" + + "github.com/jackc/pgx/v4" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries Bar(ctx context.Context) error Bars(ctx context.Context) error } diff --git a/internal/endtoend/testdata/exec_imports/pgx/v5/go/querier.go b/internal/endtoend/testdata/exec_imports/pgx/v5/go/querier.go index 265b9b5876..19b6f8c9fb 100644 --- a/internal/endtoend/testdata/exec_imports/pgx/v5/go/querier.go +++ b/internal/endtoend/testdata/exec_imports/pgx/v5/go/querier.go @@ -6,9 +6,12 @@ package querytest import ( "context" + + "github.com/jackc/pgx/v5" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries Bar(ctx context.Context) error Bars(ctx context.Context) error } diff --git a/internal/endtoend/testdata/exec_imports/stdlib/go/querier.go b/internal/endtoend/testdata/exec_imports/stdlib/go/querier.go index 265b9b5876..93c75933d2 100644 --- a/internal/endtoend/testdata/exec_imports/stdlib/go/querier.go +++ b/internal/endtoend/testdata/exec_imports/stdlib/go/querier.go @@ -6,9 +6,11 @@ package querytest import ( "context" + "database/sql" ) type Querier interface { + WithTx(tx *sql.Tx) *Queries Bar(ctx context.Context) error Bars(ctx context.Context) error } diff --git a/internal/endtoend/testdata/exec_lastid/go_postgresql_stdlib/go/querier.go b/internal/endtoend/testdata/exec_lastid/go_postgresql_stdlib/go/querier.go index c85e0fddd0..d01361d522 100644 --- a/internal/endtoend/testdata/exec_lastid/go_postgresql_stdlib/go/querier.go +++ b/internal/endtoend/testdata/exec_lastid/go_postgresql_stdlib/go/querier.go @@ -6,9 +6,11 @@ package querytest import ( "context" + "database/sql" ) type Querier interface { + WithTx(tx *sql.Tx) *Queries InsertBar(ctx context.Context) (int64, error) } diff --git a/internal/endtoend/testdata/exec_result/go_postgresql_pgx/v4/go/querier.go b/internal/endtoend/testdata/exec_result/go_postgresql_pgx/v4/go/querier.go index 73cf9a7e06..cc8eaaf8ff 100644 --- a/internal/endtoend/testdata/exec_result/go_postgresql_pgx/v4/go/querier.go +++ b/internal/endtoend/testdata/exec_result/go_postgresql_pgx/v4/go/querier.go @@ -8,9 +8,11 @@ import ( "context" "github.com/jackc/pgconn" + "github.com/jackc/pgx/v4" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries DeleteBarByID(ctx context.Context, id int32) (pgconn.CommandTag, error) } diff --git a/internal/endtoend/testdata/exec_result/go_postgresql_pgx/v5/go/querier.go b/internal/endtoend/testdata/exec_result/go_postgresql_pgx/v5/go/querier.go index ea3ef9d326..ea8da9cdac 100644 --- a/internal/endtoend/testdata/exec_result/go_postgresql_pgx/v5/go/querier.go +++ b/internal/endtoend/testdata/exec_result/go_postgresql_pgx/v5/go/querier.go @@ -7,10 +7,12 @@ package querytest import ( "context" + "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgconn" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries DeleteBarByID(ctx context.Context, id int32) (pgconn.CommandTag, error) } diff --git a/internal/endtoend/testdata/exec_result/go_postgresql_stdlib/go/querier.go b/internal/endtoend/testdata/exec_result/go_postgresql_stdlib/go/querier.go index 61eeb791ab..6434460ca8 100644 --- a/internal/endtoend/testdata/exec_result/go_postgresql_stdlib/go/querier.go +++ b/internal/endtoend/testdata/exec_result/go_postgresql_stdlib/go/querier.go @@ -10,6 +10,7 @@ import ( ) type Querier interface { + WithTx(tx *sql.Tx) *Queries DeleteBarByID(ctx context.Context, id int32) (sql.Result, error) } diff --git a/internal/endtoend/testdata/exec_rows/go_postgresql_pgx/v4/go/querier.go b/internal/endtoend/testdata/exec_rows/go_postgresql_pgx/v4/go/querier.go index 9ef785a7e5..6744c785da 100644 --- a/internal/endtoend/testdata/exec_rows/go_postgresql_pgx/v4/go/querier.go +++ b/internal/endtoend/testdata/exec_rows/go_postgresql_pgx/v4/go/querier.go @@ -6,9 +6,12 @@ package querytest import ( "context" + + "github.com/jackc/pgx/v4" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries DeleteBarByID(ctx context.Context, id int32) (int64, error) } diff --git a/internal/endtoend/testdata/exec_rows/go_postgresql_pgx/v5/go/querier.go b/internal/endtoend/testdata/exec_rows/go_postgresql_pgx/v5/go/querier.go index 9ef785a7e5..bb3dd06745 100644 --- a/internal/endtoend/testdata/exec_rows/go_postgresql_pgx/v5/go/querier.go +++ b/internal/endtoend/testdata/exec_rows/go_postgresql_pgx/v5/go/querier.go @@ -6,9 +6,12 @@ package querytest import ( "context" + + "github.com/jackc/pgx/v5" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries DeleteBarByID(ctx context.Context, id int32) (int64, error) } diff --git a/internal/endtoend/testdata/exec_rows/go_postgresql_stdlib/go/querier.go b/internal/endtoend/testdata/exec_rows/go_postgresql_stdlib/go/querier.go index 9ef785a7e5..66669a6354 100644 --- a/internal/endtoend/testdata/exec_rows/go_postgresql_stdlib/go/querier.go +++ b/internal/endtoend/testdata/exec_rows/go_postgresql_stdlib/go/querier.go @@ -6,9 +6,11 @@ package querytest import ( "context" + "database/sql" ) type Querier interface { + WithTx(tx *sql.Tx) *Queries DeleteBarByID(ctx context.Context, id int32) (int64, error) } diff --git a/internal/endtoend/testdata/output_file_names/pgx/v4/go/querier_gen.go b/internal/endtoend/testdata/output_file_names/pgx/v4/go/querier_gen.go index f0fea55f68..fe31397efb 100644 --- a/internal/endtoend/testdata/output_file_names/pgx/v4/go/querier_gen.go +++ b/internal/endtoend/testdata/output_file_names/pgx/v4/go/querier_gen.go @@ -6,9 +6,12 @@ package querytest import ( "context" + + "github.com/jackc/pgx/v4" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries User(ctx context.Context) ([]int64, error) UsersB(ctx context.Context, id []int64) *UsersBBatchResults UsersC(ctx context.Context, id []int64) (int64, error) diff --git a/internal/endtoend/testdata/output_file_names/pgx/v5/go/querier_gen.go b/internal/endtoend/testdata/output_file_names/pgx/v5/go/querier_gen.go index f0fea55f68..6894eb7af2 100644 --- a/internal/endtoend/testdata/output_file_names/pgx/v5/go/querier_gen.go +++ b/internal/endtoend/testdata/output_file_names/pgx/v5/go/querier_gen.go @@ -6,9 +6,12 @@ package querytest import ( "context" + + "github.com/jackc/pgx/v5" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries User(ctx context.Context) ([]int64, error) UsersB(ctx context.Context, id []int64) *UsersBBatchResults UsersC(ctx context.Context, id []int64) (int64, error) diff --git a/internal/endtoend/testdata/output_file_names/stdlib/go/querier_gen.go b/internal/endtoend/testdata/output_file_names/stdlib/go/querier_gen.go index e20a00ba40..17aaa68ef2 100644 --- a/internal/endtoend/testdata/output_file_names/stdlib/go/querier_gen.go +++ b/internal/endtoend/testdata/output_file_names/stdlib/go/querier_gen.go @@ -6,9 +6,11 @@ package querytest import ( "context" + "database/sql" ) type Querier interface { + WithTx(tx *sql.Tx) *Queries User(ctx context.Context) ([]int64, error) } diff --git a/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/go/querier.go b/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/go/querier.go index 54ec9efae3..a4ba3e1144 100644 --- a/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/go/querier.go +++ b/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/go/querier.go @@ -11,6 +11,7 @@ import ( ) type Querier interface { + WithTx(tx *sql.Tx) *Queries CreateNotice(ctx context.Context, cnt int32, createdAt time.Time) error MarkNoticeDone(ctx context.Context, noticeAt sql.NullTime, iD int32) error } diff --git a/internal/endtoend/testdata/query_parameter_limit_to_zero/postgresql/go/querier.go b/internal/endtoend/testdata/query_parameter_limit_to_zero/postgresql/go/querier.go index 1e90ff3aaf..29a7793b53 100644 --- a/internal/endtoend/testdata/query_parameter_limit_to_zero/postgresql/go/querier.go +++ b/internal/endtoend/testdata/query_parameter_limit_to_zero/postgresql/go/querier.go @@ -6,9 +6,11 @@ package querytest import ( "context" + "database/sql" ) type Querier interface { + WithTx(tx *sql.Tx) *Queries CreateAuthor(ctx context.Context, arg CreateAuthorParams) (Author, error) DeleteAuthor(ctx context.Context, arg DeleteAuthorParams) error GetAuthor(ctx context.Context, arg GetAuthorParams) (Author, error) diff --git a/internal/endtoend/testdata/unnest/postgresql/pgx/v4/go/querier.go b/internal/endtoend/testdata/unnest/postgresql/pgx/v4/go/querier.go index 80add2241a..4b31e03529 100644 --- a/internal/endtoend/testdata/unnest/postgresql/pgx/v4/go/querier.go +++ b/internal/endtoend/testdata/unnest/postgresql/pgx/v4/go/querier.go @@ -8,9 +8,11 @@ import ( "context" "github.com/google/uuid" + "github.com/jackc/pgx/v4" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries CreateMemories(ctx context.Context, vampireID []uuid.UUID) ([]Memory, error) GetVampireIDs(ctx context.Context, vampireID []uuid.UUID) ([]uuid.UUID, error) } diff --git a/internal/endtoend/testdata/unnest/postgresql/pgx/v5/go/querier.go b/internal/endtoend/testdata/unnest/postgresql/pgx/v5/go/querier.go index a41cc8a479..42f8e1e5da 100644 --- a/internal/endtoend/testdata/unnest/postgresql/pgx/v5/go/querier.go +++ b/internal/endtoend/testdata/unnest/postgresql/pgx/v5/go/querier.go @@ -7,10 +7,12 @@ package querytest import ( "context" + "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgtype" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries CreateMemories(ctx context.Context, vampireID []pgtype.UUID) ([]Memory, error) GetVampireIDs(ctx context.Context, vampireID []pgtype.UUID) ([]pgtype.UUID, error) } diff --git a/internal/endtoend/testdata/unnest/postgresql/stdlib/go/querier.go b/internal/endtoend/testdata/unnest/postgresql/stdlib/go/querier.go index 80add2241a..e2707f934d 100644 --- a/internal/endtoend/testdata/unnest/postgresql/stdlib/go/querier.go +++ b/internal/endtoend/testdata/unnest/postgresql/stdlib/go/querier.go @@ -6,11 +6,13 @@ package querytest import ( "context" + "database/sql" "github.com/google/uuid" ) type Querier interface { + WithTx(tx *sql.Tx) *Queries CreateMemories(ctx context.Context, vampireID []uuid.UUID) ([]Memory, error) GetVampireIDs(ctx context.Context, vampireID []uuid.UUID) ([]uuid.UUID, error) } diff --git a/internal/endtoend/testdata/unnest_with_ordinality/postgresql/pgx/v4/go/querier.go b/internal/endtoend/testdata/unnest_with_ordinality/postgresql/pgx/v4/go/querier.go index 24c35b96ae..03e90ea2f3 100644 --- a/internal/endtoend/testdata/unnest_with_ordinality/postgresql/pgx/v4/go/querier.go +++ b/internal/endtoend/testdata/unnest_with_ordinality/postgresql/pgx/v4/go/querier.go @@ -6,9 +6,12 @@ package querytest import ( "context" + + "github.com/jackc/pgx/v4" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries GetValues(ctx context.Context) ([]GetValuesRow, error) } diff --git a/internal/endtoend/testdata/unnest_with_ordinality/postgresql/pgx/v5/go/querier.go b/internal/endtoend/testdata/unnest_with_ordinality/postgresql/pgx/v5/go/querier.go index 24c35b96ae..587b2a5f1a 100644 --- a/internal/endtoend/testdata/unnest_with_ordinality/postgresql/pgx/v5/go/querier.go +++ b/internal/endtoend/testdata/unnest_with_ordinality/postgresql/pgx/v5/go/querier.go @@ -6,9 +6,12 @@ package querytest import ( "context" + + "github.com/jackc/pgx/v5" ) type Querier interface { + WithTx(tx pgx.Tx) *Queries GetValues(ctx context.Context) ([]GetValuesRow, error) } diff --git a/internal/endtoend/testdata/unnest_with_ordinality/postgresql/stdlib/go/querier.go b/internal/endtoend/testdata/unnest_with_ordinality/postgresql/stdlib/go/querier.go index 24c35b96ae..8201f03ac9 100644 --- a/internal/endtoend/testdata/unnest_with_ordinality/postgresql/stdlib/go/querier.go +++ b/internal/endtoend/testdata/unnest_with_ordinality/postgresql/stdlib/go/querier.go @@ -6,9 +6,11 @@ package querytest import ( "context" + "database/sql" ) type Querier interface { + WithTx(tx *sql.Tx) *Queries GetValues(ctx context.Context) ([]GetValuesRow, error) } diff --git a/internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/db.go b/internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/db.go new file mode 100644 index 0000000000..5f9cc6e8de --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/db.go @@ -0,0 +1,32 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.25.0 + +package querytest + +import ( + "context" + + "github.com/jackc/pgconn" + "github.com/jackc/pgx/v4" +) + +type DBTX interface { + Exec(context.Context, string, ...interface{}) (pgconn.CommandTag, error) + Query(context.Context, string, ...interface{}) (pgx.Rows, error) + QueryRow(context.Context, string, ...interface{}) pgx.Row +} + +func New(db DBTX) *Queries { + return &Queries{db: db} +} + +type Queries struct { + db DBTX +} + +func (q *Queries) WithTx(tx pgx.Tx) Querier { + return &Queries{ + db: tx, + } +} diff --git a/internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/models.go b/internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/models.go new file mode 100644 index 0000000000..02b1d4c940 --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/models.go @@ -0,0 +1,14 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.25.0 + +package querytest + +import ( + "database/sql" +) + +type Foo struct { + Bar sql.NullInt32 + Bars []int32 +} diff --git a/internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/querier.go b/internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/querier.go new file mode 100644 index 0000000000..51f707bf2a --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/querier.go @@ -0,0 +1,19 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.25.0 + +package querytest + +import ( + "context" + + "github.com/jackc/pgx/v4" +) + +type Querier interface { + WithTx(tx pgx.Tx) Querier + Bar(ctx context.Context) error + Bars(ctx context.Context) error +} + +var _ Querier = (*Queries)(nil) diff --git a/internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/query.sql.go b/internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/query.sql.go new file mode 100644 index 0000000000..433af49b5c --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/pgx/v4/go/query.sql.go @@ -0,0 +1,30 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.25.0 +// source: query.sql + +package querytest + +import ( + "context" +) + +const bar = `-- name: Bar :exec +SELECT bar +FROM foo +` + +func (q *Queries) Bar(ctx context.Context) error { + _, err := q.db.Exec(ctx, bar) + return err +} + +const bars = `-- name: Bars :exec +SELECT bars +FROM foo +` + +func (q *Queries) Bars(ctx context.Context) error { + _, err := q.db.Exec(ctx, bars) + return err +} diff --git a/internal/endtoend/testdata/use_interface_return_types/pgx/v4/query.sql b/internal/endtoend/testdata/use_interface_return_types/pgx/v4/query.sql new file mode 100644 index 0000000000..b1be28c911 --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/pgx/v4/query.sql @@ -0,0 +1,7 @@ +-- name: Bar :exec +SELECT bar +FROM foo; + +-- name: Bars :exec +SELECT bars +FROM foo; diff --git a/internal/endtoend/testdata/use_interface_return_types/pgx/v4/schema.sql b/internal/endtoend/testdata/use_interface_return_types/pgx/v4/schema.sql new file mode 100644 index 0000000000..63886c12da --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/pgx/v4/schema.sql @@ -0,0 +1,2 @@ +CREATE TABLE foo (bar int, bars int[] not null); + diff --git a/internal/endtoend/testdata/use_interface_return_types/pgx/v4/sqlc.json b/internal/endtoend/testdata/use_interface_return_types/pgx/v4/sqlc.json new file mode 100644 index 0000000000..0acd44a877 --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/pgx/v4/sqlc.json @@ -0,0 +1,15 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "engine": "postgresql", + "sql_package": "pgx/v4", + "name": "querytest", + "schema": "schema.sql", + "queries": "query.sql", + "emit_interface": true, + "use_interface_return_types": true + } + ] +} diff --git a/internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/db.go b/internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/db.go new file mode 100644 index 0000000000..581ba94a6b --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/db.go @@ -0,0 +1,32 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.25.0 + +package querytest + +import ( + "context" + + "github.com/jackc/pgx/v5" + "github.com/jackc/pgx/v5/pgconn" +) + +type DBTX interface { + Exec(context.Context, string, ...interface{}) (pgconn.CommandTag, error) + Query(context.Context, string, ...interface{}) (pgx.Rows, error) + QueryRow(context.Context, string, ...interface{}) pgx.Row +} + +func New(db DBTX) *Queries { + return &Queries{db: db} +} + +type Queries struct { + db DBTX +} + +func (q *Queries) WithTx(tx pgx.Tx) Querier { + return &Queries{ + db: tx, + } +} diff --git a/internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/models.go b/internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/models.go new file mode 100644 index 0000000000..aa2e1dcc90 --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/models.go @@ -0,0 +1,14 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.25.0 + +package querytest + +import ( + "github.com/jackc/pgx/v5/pgtype" +) + +type Foo struct { + Bar pgtype.Int4 + Bars []int32 +} diff --git a/internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/querier.go b/internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/querier.go new file mode 100644 index 0000000000..89289b90c7 --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/querier.go @@ -0,0 +1,19 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.25.0 + +package querytest + +import ( + "context" + + "github.com/jackc/pgx/v5" +) + +type Querier interface { + WithTx(tx pgx.Tx) Querier + Bar(ctx context.Context) error + Bars(ctx context.Context) error +} + +var _ Querier = (*Queries)(nil) diff --git a/internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/query.sql.go b/internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/query.sql.go new file mode 100644 index 0000000000..433af49b5c --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/pgx/v5/go/query.sql.go @@ -0,0 +1,30 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.25.0 +// source: query.sql + +package querytest + +import ( + "context" +) + +const bar = `-- name: Bar :exec +SELECT bar +FROM foo +` + +func (q *Queries) Bar(ctx context.Context) error { + _, err := q.db.Exec(ctx, bar) + return err +} + +const bars = `-- name: Bars :exec +SELECT bars +FROM foo +` + +func (q *Queries) Bars(ctx context.Context) error { + _, err := q.db.Exec(ctx, bars) + return err +} diff --git a/internal/endtoend/testdata/use_interface_return_types/pgx/v5/query.sql b/internal/endtoend/testdata/use_interface_return_types/pgx/v5/query.sql new file mode 100644 index 0000000000..b1be28c911 --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/pgx/v5/query.sql @@ -0,0 +1,7 @@ +-- name: Bar :exec +SELECT bar +FROM foo; + +-- name: Bars :exec +SELECT bars +FROM foo; diff --git a/internal/endtoend/testdata/use_interface_return_types/pgx/v5/schema.sql b/internal/endtoend/testdata/use_interface_return_types/pgx/v5/schema.sql new file mode 100644 index 0000000000..63886c12da --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/pgx/v5/schema.sql @@ -0,0 +1,2 @@ +CREATE TABLE foo (bar int, bars int[] not null); + diff --git a/internal/endtoend/testdata/use_interface_return_types/pgx/v5/sqlc.json b/internal/endtoend/testdata/use_interface_return_types/pgx/v5/sqlc.json new file mode 100644 index 0000000000..5ab9f1f9b4 --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/pgx/v5/sqlc.json @@ -0,0 +1,15 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "engine": "postgresql", + "sql_package": "pgx/v5", + "name": "querytest", + "schema": "schema.sql", + "queries": "query.sql", + "emit_interface": true, + "use_interface_return_types": true + } + ] +} diff --git a/internal/endtoend/testdata/use_interface_return_types/stdlib/go/db.go b/internal/endtoend/testdata/use_interface_return_types/stdlib/go/db.go new file mode 100644 index 0000000000..627e7dc6c4 --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/stdlib/go/db.go @@ -0,0 +1,31 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.25.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) Querier { + return &Queries{ + db: tx, + } +} diff --git a/internal/endtoend/testdata/use_interface_return_types/stdlib/go/models.go b/internal/endtoend/testdata/use_interface_return_types/stdlib/go/models.go new file mode 100644 index 0000000000..02b1d4c940 --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/stdlib/go/models.go @@ -0,0 +1,14 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.25.0 + +package querytest + +import ( + "database/sql" +) + +type Foo struct { + Bar sql.NullInt32 + Bars []int32 +} diff --git a/internal/endtoend/testdata/use_interface_return_types/stdlib/go/querier.go b/internal/endtoend/testdata/use_interface_return_types/stdlib/go/querier.go new file mode 100644 index 0000000000..3e8f591a24 --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/stdlib/go/querier.go @@ -0,0 +1,18 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.25.0 + +package querytest + +import ( + "context" + "database/sql" +) + +type Querier interface { + WithTx(tx *sql.Tx) Querier + Bar(ctx context.Context) error + Bars(ctx context.Context) error +} + +var _ Querier = (*Queries)(nil) diff --git a/internal/endtoend/testdata/use_interface_return_types/stdlib/go/query.sql.go b/internal/endtoend/testdata/use_interface_return_types/stdlib/go/query.sql.go new file mode 100644 index 0000000000..3ee2241435 --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/stdlib/go/query.sql.go @@ -0,0 +1,30 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.25.0 +// source: query.sql + +package querytest + +import ( + "context" +) + +const bar = `-- name: Bar :exec +SELECT bar +FROM foo +` + +func (q *Queries) Bar(ctx context.Context) error { + _, err := q.db.ExecContext(ctx, bar) + return err +} + +const bars = `-- name: Bars :exec +SELECT bars +FROM foo +` + +func (q *Queries) Bars(ctx context.Context) error { + _, err := q.db.ExecContext(ctx, bars) + return err +} diff --git a/internal/endtoend/testdata/use_interface_return_types/stdlib/query.sql b/internal/endtoend/testdata/use_interface_return_types/stdlib/query.sql new file mode 100644 index 0000000000..b1be28c911 --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/stdlib/query.sql @@ -0,0 +1,7 @@ +-- name: Bar :exec +SELECT bar +FROM foo; + +-- name: Bars :exec +SELECT bars +FROM foo; diff --git a/internal/endtoend/testdata/use_interface_return_types/stdlib/schema.sql b/internal/endtoend/testdata/use_interface_return_types/stdlib/schema.sql new file mode 100644 index 0000000000..63886c12da --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/stdlib/schema.sql @@ -0,0 +1,2 @@ +CREATE TABLE foo (bar int, bars int[] not null); + diff --git a/internal/endtoend/testdata/use_interface_return_types/stdlib/sqlc.json b/internal/endtoend/testdata/use_interface_return_types/stdlib/sqlc.json new file mode 100644 index 0000000000..97296228d0 --- /dev/null +++ b/internal/endtoend/testdata/use_interface_return_types/stdlib/sqlc.json @@ -0,0 +1,13 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "name": "querytest", + "schema": "schema.sql", + "queries": "query.sql", + "emit_interface": true, + "use_interface_return_types": true + } + ] +}