From 1cb85e4d69d794cadd9aca05a1e96d39a761d1f3 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 2629babf4b..f1a240ea6c 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 a2bf560ceb..6139e174c2 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 7f615fc2be..3a3e15217d 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 30ddca54ca..4b417c976c 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 7f615fc2be..3a3e15217d 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 5b7977f500..4935f323c9 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 9e7819e4b1..745ac3d2a3 100644 --- a/internal/codegen/golang/imports.go +++ b/internal/codegen/golang/imports.go @@ -268,6 +268,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 30a6c2246c..6427c16656 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 8cba4ad693..b699dbf14a 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 2681b43684..7685057c7c 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 e487c3b59c..93044b7c99 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 704ebff34b..a7c34e4b85 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 704ebff34b..2cdf7560ad 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 6643bea419..849deb3683 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 1a71efdde8..738ddfff8e 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 2ae00be5a3..cfc4ea6b4c 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 2ae00be5a3..ceb849055a 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 2ae00be5a3..079de0ee18 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 8796c0414a..34c7af63fc 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 33cb376689..4cb7255749 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 00c5aa4da9..ebcf56d4bc 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 fc3b9e6f3f..7e9f273d6d 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 131125c0f7..0ee7d440d3 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 131125c0f7..d7ff1ccc69 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 131125c0f7..2ecbb9134d 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 1998cd542e..3c74f3a3e1 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 1998cd542e..58f5ad7937 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 e573875d11..2f5e38f335 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 6df902f6c0..fb9c86fb37 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 fa4e0c2b8c..ea399ce952 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 b41b24b95d..1f066f5cac 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 16fc2d96a5..9d4720d275 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 b41b24b95d..2792c35005 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 0db8b68ca3..29d3dec7ed 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 0db8b68ca3..a0684bb6ef 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 0db8b68ca3..10c71086d6 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 + } + ] +}