diff --git a/internal/codegen/golang/imports.go b/internal/codegen/golang/imports.go index b8552fd6ae..71146ba643 100644 --- a/internal/codegen/golang/imports.go +++ b/internal/codegen/golang/imports.go @@ -243,8 +243,10 @@ func (i *importer) interfaceImports() fileImports { } } if !q.Arg.isEmpty() { - if hasPrefixIgnoringSliceAndPointerPrefix(q.Arg.Type(), name) { - return true + for _, f := range q.Arg.Fields() { + if hasPrefixIgnoringSliceAndPointerPrefix(f.Type, name) { + return true + } } } } @@ -311,16 +313,11 @@ func (i *importer) queryImports(filename string) fileImports { } } if !q.Arg.isEmpty() { - if q.Arg.EmitStruct() { - for _, f := range q.Arg.Struct.Fields { - if hasPrefixIgnoringSliceAndPointerPrefix(f.Type, name) { - return true - } + for _, f := range q.Arg.Fields() { + if hasPrefixIgnoringSliceAndPointerPrefix(f.Type, name) { + return true } } - if hasPrefixIgnoringSliceAndPointerPrefix(q.Arg.Type(), name) { - return true - } } } return false diff --git a/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/go/db.go b/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/go/db.go new file mode 100644 index 0000000000..57406b68e8 --- /dev/null +++ b/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/go/db.go @@ -0,0 +1,31 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.20.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/query_parameter_limit_param_only/postgresql/go/models.go b/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/go/models.go new file mode 100644 index 0000000000..2074349ae0 --- /dev/null +++ b/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/go/models.go @@ -0,0 +1,18 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.20.0 + +package querytest + +import ( + "database/sql" + "time" +) + +type Notice struct { + ID int32 + Cnt int32 + Status string + NoticeAt sql.NullTime + CreatedAt time.Time +} 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 new file mode 100644 index 0000000000..13f02e9f9a --- /dev/null +++ b/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/go/querier.go @@ -0,0 +1,18 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.20.0 + +package querytest + +import ( + "context" + "database/sql" + "time" +) + +type Querier interface { + CreateNotice(ctx context.Context, cnt int32, createdAt time.Time) error + MarkNoticeDone(ctx context.Context, noticeAt sql.NullTime, iD int32) error +} + +var _ Querier = (*Queries)(nil) diff --git a/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/go/query.sql.go b/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/go/query.sql.go new file mode 100644 index 0000000000..b45dbb79d6 --- /dev/null +++ b/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/go/query.sql.go @@ -0,0 +1,33 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.20.0 +// source: query.sql + +package querytest + +import ( + "context" + "database/sql" + "time" +) + +const createNotice = `-- name: CreateNotice :exec +INSERT INTO notice (cnt, created_at) +VALUES ($1, $2) +` + +func (q *Queries) CreateNotice(ctx context.Context, cnt int32, createdAt time.Time) error { + _, err := q.db.ExecContext(ctx, createNotice, cnt, createdAt) + return err +} + +const markNoticeDone = `-- name: MarkNoticeDone :exec +UPDATE notice +SET status='done', notice_at=$1 +WHERE id=$2 +` + +func (q *Queries) MarkNoticeDone(ctx context.Context, noticeAt sql.NullTime, iD int32) error { + _, err := q.db.ExecContext(ctx, markNoticeDone, noticeAt, iD) + return err +} diff --git a/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/query.sql b/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/query.sql new file mode 100644 index 0000000000..7cdc56fadf --- /dev/null +++ b/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/query.sql @@ -0,0 +1,16 @@ +CREATE TABLE notice ( + id INTEGER NOT NULL, + cnt INTEGER NOT NULL, + status TEXT NOT NULL, + notice_at TIMESTAMP, + created_at TIMESTAMP NOT NULL +); + +-- name: MarkNoticeDone :exec +UPDATE notice +SET status='done', notice_at=$1 +WHERE id=$2; + +-- name: CreateNotice :exec +INSERT INTO notice (cnt, created_at) +VALUES ($1, $2); \ No newline at end of file diff --git a/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/sqlc.json b/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/sqlc.json new file mode 100644 index 0000000000..8cf64b386a --- /dev/null +++ b/internal/endtoend/testdata/query_parameter_limit_param_only/postgresql/sqlc.json @@ -0,0 +1,14 @@ +{ + "version": "1", + "packages": [ + { + "path": "go", + "engine": "postgresql", + "schema": "query.sql", + "queries": "query.sql", + "query_parameter_limit": 2, + "emit_interface": true, + "name": "querytest" + } + ] +} \ No newline at end of file