snapshot of https://github.com/sqlc-dev/sqlc.git (main, 2026-09-16; blobs > 131072B omitted)
Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
This commit is contained in:
3
internal/endtoend/testdata/params_location/postgresql/pgx/v4/exec.json
vendored
Normal file
3
internal/endtoend/testdata/params_location/postgresql/pgx/v4/exec.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"contexts": ["base"]
|
||||
}
|
||||
32
internal/endtoend/testdata/params_location/postgresql/pgx/v4/go/db.go
vendored
Normal file
32
internal/endtoend/testdata/params_location/postgresql/pgx/v4/go/db.go
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.31.1
|
||||
|
||||
package querytest
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/jackc/pgconn"
|
||||
"github.com/jackc/pgx/v4"
|
||||
)
|
||||
|
||||
type DBTX interface {
|
||||
Exec(context.Context, string, ...any) (pgconn.CommandTag, error)
|
||||
Query(context.Context, string, ...any) (pgx.Rows, error)
|
||||
QueryRow(context.Context, string, ...any) pgx.Row
|
||||
}
|
||||
|
||||
func New(db DBTX) *Queries {
|
||||
return &Queries{db: db}
|
||||
}
|
||||
|
||||
type Queries struct {
|
||||
db DBTX
|
||||
}
|
||||
|
||||
func (q *Queries) WithTx(tx pgx.Tx) *Queries {
|
||||
return &Queries{
|
||||
db: tx,
|
||||
}
|
||||
}
|
||||
25
internal/endtoend/testdata/params_location/postgresql/pgx/v4/go/models.go
vendored
Normal file
25
internal/endtoend/testdata/params_location/postgresql/pgx/v4/go/models.go
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.31.1
|
||||
|
||||
package querytest
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
|
||||
"github.com/jackc/pgtype"
|
||||
)
|
||||
|
||||
type Order struct {
|
||||
ID int32
|
||||
Price pgtype.Numeric
|
||||
UserID int32
|
||||
}
|
||||
|
||||
type User struct {
|
||||
ID int32
|
||||
FirstName string
|
||||
LastName sql.NullString
|
||||
Age int32
|
||||
JobStatus string
|
||||
}
|
||||
241
internal/endtoend/testdata/params_location/postgresql/pgx/v4/go/query.sql.go
vendored
Normal file
241
internal/endtoend/testdata/params_location/postgresql/pgx/v4/go/query.sql.go
vendored
Normal file
@@ -0,0 +1,241 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.31.1
|
||||
// source: query.sql
|
||||
|
||||
package querytest
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
|
||||
"github.com/jackc/pgtype"
|
||||
)
|
||||
|
||||
const getUserByID = `-- name: GetUserByID :one
|
||||
SELECT first_name, id, last_name FROM users WHERE id = $1
|
||||
`
|
||||
|
||||
type GetUserByIDRow struct {
|
||||
FirstName string
|
||||
ID int32
|
||||
LastName sql.NullString
|
||||
}
|
||||
|
||||
func (q *Queries) GetUserByID(ctx context.Context, targetID int32) (GetUserByIDRow, error) {
|
||||
row := q.db.QueryRow(ctx, getUserByID, targetID)
|
||||
var i GetUserByIDRow
|
||||
err := row.Scan(&i.FirstName, &i.ID, &i.LastName)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const insertNewUser = `-- name: InsertNewUser :exec
|
||||
INSERT INTO users (first_name, last_name) VALUES ($1, $2)
|
||||
`
|
||||
|
||||
type InsertNewUserParams struct {
|
||||
FirstName string
|
||||
LastName sql.NullString
|
||||
}
|
||||
|
||||
func (q *Queries) InsertNewUser(ctx context.Context, arg InsertNewUserParams) error {
|
||||
_, err := q.db.Exec(ctx, insertNewUser, arg.FirstName, arg.LastName)
|
||||
return err
|
||||
}
|
||||
|
||||
const limitSQLCArg = `-- name: LimitSQLCArg :many
|
||||
select first_name, id FROM users LIMIT $1
|
||||
`
|
||||
|
||||
type LimitSQLCArgRow struct {
|
||||
FirstName string
|
||||
ID int32
|
||||
}
|
||||
|
||||
func (q *Queries) LimitSQLCArg(ctx context.Context, limit int32) ([]LimitSQLCArgRow, error) {
|
||||
rows, err := q.db.Query(ctx, limitSQLCArg, limit)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []LimitSQLCArgRow
|
||||
for rows.Next() {
|
||||
var i LimitSQLCArgRow
|
||||
if err := rows.Scan(&i.FirstName, &i.ID); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUserOrders = `-- name: ListUserOrders :many
|
||||
SELECT
|
||||
users.id,
|
||||
users.first_name,
|
||||
orders.price
|
||||
FROM
|
||||
orders
|
||||
LEFT JOIN users ON orders.user_id = users.id
|
||||
WHERE orders.price > $1
|
||||
`
|
||||
|
||||
type ListUserOrdersRow struct {
|
||||
ID sql.NullInt32
|
||||
FirstName sql.NullString
|
||||
Price pgtype.Numeric
|
||||
}
|
||||
|
||||
func (q *Queries) ListUserOrders(ctx context.Context, minPrice pgtype.Numeric) ([]ListUserOrdersRow, error) {
|
||||
rows, err := q.db.Query(ctx, listUserOrders, minPrice)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []ListUserOrdersRow
|
||||
for rows.Next() {
|
||||
var i ListUserOrdersRow
|
||||
if err := rows.Scan(&i.ID, &i.FirstName, &i.Price); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUserParenExpr = `-- name: ListUserParenExpr :many
|
||||
SELECT id, first_name, last_name, age, job_status FROM users WHERE (job_status = 'APPLIED' OR job_status = 'PENDING')
|
||||
AND id > $1
|
||||
ORDER BY id
|
||||
LIMIT $2
|
||||
`
|
||||
|
||||
type ListUserParenExprParams struct {
|
||||
ID int32
|
||||
Limit int32
|
||||
}
|
||||
|
||||
func (q *Queries) ListUserParenExpr(ctx context.Context, arg ListUserParenExprParams) ([]User, error) {
|
||||
rows, err := q.db.Query(ctx, listUserParenExpr, arg.ID, arg.Limit)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []User
|
||||
for rows.Next() {
|
||||
var i User
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.FirstName,
|
||||
&i.LastName,
|
||||
&i.Age,
|
||||
&i.JobStatus,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUsersByFamily = `-- name: ListUsersByFamily :many
|
||||
SELECT first_name, last_name FROM users WHERE age < $1 AND last_name = $2
|
||||
`
|
||||
|
||||
type ListUsersByFamilyParams struct {
|
||||
MaxAge int32
|
||||
InFamily sql.NullString
|
||||
}
|
||||
|
||||
type ListUsersByFamilyRow struct {
|
||||
FirstName string
|
||||
LastName sql.NullString
|
||||
}
|
||||
|
||||
func (q *Queries) ListUsersByFamily(ctx context.Context, arg ListUsersByFamilyParams) ([]ListUsersByFamilyRow, error) {
|
||||
rows, err := q.db.Query(ctx, listUsersByFamily, arg.MaxAge, arg.InFamily)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []ListUsersByFamilyRow
|
||||
for rows.Next() {
|
||||
var i ListUsersByFamilyRow
|
||||
if err := rows.Scan(&i.FirstName, &i.LastName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUsersByID = `-- name: ListUsersByID :many
|
||||
SELECT first_name, id, last_name FROM users WHERE id < $1
|
||||
`
|
||||
|
||||
type ListUsersByIDRow struct {
|
||||
FirstName string
|
||||
ID int32
|
||||
LastName sql.NullString
|
||||
}
|
||||
|
||||
func (q *Queries) ListUsersByID(ctx context.Context, id int32) ([]ListUsersByIDRow, error) {
|
||||
rows, err := q.db.Query(ctx, listUsersByID, id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []ListUsersByIDRow
|
||||
for rows.Next() {
|
||||
var i ListUsersByIDRow
|
||||
if err := rows.Scan(&i.FirstName, &i.ID, &i.LastName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUsersWithLimit = `-- name: ListUsersWithLimit :many
|
||||
SELECT first_name, last_name FROM users LIMIT $1
|
||||
`
|
||||
|
||||
type ListUsersWithLimitRow struct {
|
||||
FirstName string
|
||||
LastName sql.NullString
|
||||
}
|
||||
|
||||
func (q *Queries) ListUsersWithLimit(ctx context.Context, limit int32) ([]ListUsersWithLimitRow, error) {
|
||||
rows, err := q.db.Query(ctx, listUsersWithLimit, limit)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []ListUsersWithLimitRow
|
||||
for rows.Next() {
|
||||
var i ListUsersWithLimitRow
|
||||
if err := rows.Scan(&i.FirstName, &i.LastName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
33
internal/endtoend/testdata/params_location/postgresql/pgx/v4/query.sql
vendored
Normal file
33
internal/endtoend/testdata/params_location/postgresql/pgx/v4/query.sql
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
/* name: ListUsersByID :many */
|
||||
SELECT first_name, id, last_name FROM users WHERE id < $1;
|
||||
|
||||
/* name: ListUserOrders :many */
|
||||
SELECT
|
||||
users.id,
|
||||
users.first_name,
|
||||
orders.price
|
||||
FROM
|
||||
orders
|
||||
LEFT JOIN users ON orders.user_id = users.id
|
||||
WHERE orders.price > sqlc.arg('min_price');
|
||||
|
||||
/* name: GetUserByID :one */
|
||||
SELECT first_name, id, last_name FROM users WHERE id = sqlc.arg('target_id');
|
||||
|
||||
/* name: ListUsersByFamily :many */
|
||||
SELECT first_name, last_name FROM users WHERE age < sqlc.arg('max_age') AND last_name = sqlc.arg('in_family');
|
||||
|
||||
/* name: ListUsersWithLimit :many */
|
||||
SELECT first_name, last_name FROM users LIMIT $1;
|
||||
|
||||
/* name: LimitSQLCArg :many */
|
||||
select first_name, id FROM users LIMIT $1;
|
||||
|
||||
/* name: InsertNewUser :exec */
|
||||
INSERT INTO users (first_name, last_name) VALUES ($1, $2);
|
||||
|
||||
/* name: ListUserParenExpr :many */
|
||||
SELECT * FROM users WHERE (job_status = 'APPLIED' OR job_status = 'PENDING')
|
||||
AND id > $1
|
||||
ORDER BY id
|
||||
LIMIT $2;
|
||||
14
internal/endtoend/testdata/params_location/postgresql/pgx/v4/schema.sql
vendored
Normal file
14
internal/endtoend/testdata/params_location/postgresql/pgx/v4/schema.sql
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
CREATE TABLE users (
|
||||
id SERIAL NOT NULL,
|
||||
first_name varchar(255) NOT NULL,
|
||||
last_name varchar(255),
|
||||
age integer NOT NULL,
|
||||
job_status varchar(10) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE orders (
|
||||
id SERIAL NOT NULL,
|
||||
price DECIMAL(13, 4) NOT NULL,
|
||||
user_id integer NOT NULL
|
||||
);
|
||||
|
||||
13
internal/endtoend/testdata/params_location/postgresql/pgx/v4/sqlc.json
vendored
Normal file
13
internal/endtoend/testdata/params_location/postgresql/pgx/v4/sqlc.json
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"version": "1",
|
||||
"packages": [
|
||||
{
|
||||
"path": "go",
|
||||
"engine": "postgresql",
|
||||
"sql_package": "pgx/v4",
|
||||
"name": "querytest",
|
||||
"schema": "schema.sql",
|
||||
"queries": "query.sql"
|
||||
}
|
||||
]
|
||||
}
|
||||
3
internal/endtoend/testdata/params_location/postgresql/pgx/v5/exec.json
vendored
Normal file
3
internal/endtoend/testdata/params_location/postgresql/pgx/v5/exec.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"contexts": ["base"]
|
||||
}
|
||||
32
internal/endtoend/testdata/params_location/postgresql/pgx/v5/go/db.go
vendored
Normal file
32
internal/endtoend/testdata/params_location/postgresql/pgx/v5/go/db.go
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.31.1
|
||||
|
||||
package querytest
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/jackc/pgx/v5"
|
||||
"github.com/jackc/pgx/v5/pgconn"
|
||||
)
|
||||
|
||||
type DBTX interface {
|
||||
Exec(context.Context, string, ...any) (pgconn.CommandTag, error)
|
||||
Query(context.Context, string, ...any) (pgx.Rows, error)
|
||||
QueryRow(context.Context, string, ...any) pgx.Row
|
||||
}
|
||||
|
||||
func New(db DBTX) *Queries {
|
||||
return &Queries{db: db}
|
||||
}
|
||||
|
||||
type Queries struct {
|
||||
db DBTX
|
||||
}
|
||||
|
||||
func (q *Queries) WithTx(tx pgx.Tx) *Queries {
|
||||
return &Queries{
|
||||
db: tx,
|
||||
}
|
||||
}
|
||||
23
internal/endtoend/testdata/params_location/postgresql/pgx/v5/go/models.go
vendored
Normal file
23
internal/endtoend/testdata/params_location/postgresql/pgx/v5/go/models.go
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.31.1
|
||||
|
||||
package querytest
|
||||
|
||||
import (
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
)
|
||||
|
||||
type Order struct {
|
||||
ID int32
|
||||
Price pgtype.Numeric
|
||||
UserID int32
|
||||
}
|
||||
|
||||
type User struct {
|
||||
ID int32
|
||||
FirstName string
|
||||
LastName pgtype.Text
|
||||
Age int32
|
||||
JobStatus string
|
||||
}
|
||||
240
internal/endtoend/testdata/params_location/postgresql/pgx/v5/go/query.sql.go
vendored
Normal file
240
internal/endtoend/testdata/params_location/postgresql/pgx/v5/go/query.sql.go
vendored
Normal file
@@ -0,0 +1,240 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.31.1
|
||||
// source: query.sql
|
||||
|
||||
package querytest
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgtype"
|
||||
)
|
||||
|
||||
const getUserByID = `-- name: GetUserByID :one
|
||||
SELECT first_name, id, last_name FROM users WHERE id = $1
|
||||
`
|
||||
|
||||
type GetUserByIDRow struct {
|
||||
FirstName string
|
||||
ID int32
|
||||
LastName pgtype.Text
|
||||
}
|
||||
|
||||
func (q *Queries) GetUserByID(ctx context.Context, targetID int32) (GetUserByIDRow, error) {
|
||||
row := q.db.QueryRow(ctx, getUserByID, targetID)
|
||||
var i GetUserByIDRow
|
||||
err := row.Scan(&i.FirstName, &i.ID, &i.LastName)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const insertNewUser = `-- name: InsertNewUser :exec
|
||||
INSERT INTO users (first_name, last_name) VALUES ($1, $2)
|
||||
`
|
||||
|
||||
type InsertNewUserParams struct {
|
||||
FirstName string
|
||||
LastName pgtype.Text
|
||||
}
|
||||
|
||||
func (q *Queries) InsertNewUser(ctx context.Context, arg InsertNewUserParams) error {
|
||||
_, err := q.db.Exec(ctx, insertNewUser, arg.FirstName, arg.LastName)
|
||||
return err
|
||||
}
|
||||
|
||||
const limitSQLCArg = `-- name: LimitSQLCArg :many
|
||||
select first_name, id FROM users LIMIT $1
|
||||
`
|
||||
|
||||
type LimitSQLCArgRow struct {
|
||||
FirstName string
|
||||
ID int32
|
||||
}
|
||||
|
||||
func (q *Queries) LimitSQLCArg(ctx context.Context, limit int32) ([]LimitSQLCArgRow, error) {
|
||||
rows, err := q.db.Query(ctx, limitSQLCArg, limit)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []LimitSQLCArgRow
|
||||
for rows.Next() {
|
||||
var i LimitSQLCArgRow
|
||||
if err := rows.Scan(&i.FirstName, &i.ID); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUserOrders = `-- name: ListUserOrders :many
|
||||
SELECT
|
||||
users.id,
|
||||
users.first_name,
|
||||
orders.price
|
||||
FROM
|
||||
orders
|
||||
LEFT JOIN users ON orders.user_id = users.id
|
||||
WHERE orders.price > $1
|
||||
`
|
||||
|
||||
type ListUserOrdersRow struct {
|
||||
ID pgtype.Int4
|
||||
FirstName pgtype.Text
|
||||
Price pgtype.Numeric
|
||||
}
|
||||
|
||||
func (q *Queries) ListUserOrders(ctx context.Context, minPrice pgtype.Numeric) ([]ListUserOrdersRow, error) {
|
||||
rows, err := q.db.Query(ctx, listUserOrders, minPrice)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []ListUserOrdersRow
|
||||
for rows.Next() {
|
||||
var i ListUserOrdersRow
|
||||
if err := rows.Scan(&i.ID, &i.FirstName, &i.Price); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUserParenExpr = `-- name: ListUserParenExpr :many
|
||||
SELECT id, first_name, last_name, age, job_status FROM users WHERE (job_status = 'APPLIED' OR job_status = 'PENDING')
|
||||
AND id > $1
|
||||
ORDER BY id
|
||||
LIMIT $2
|
||||
`
|
||||
|
||||
type ListUserParenExprParams struct {
|
||||
ID int32
|
||||
Limit int32
|
||||
}
|
||||
|
||||
func (q *Queries) ListUserParenExpr(ctx context.Context, arg ListUserParenExprParams) ([]User, error) {
|
||||
rows, err := q.db.Query(ctx, listUserParenExpr, arg.ID, arg.Limit)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []User
|
||||
for rows.Next() {
|
||||
var i User
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.FirstName,
|
||||
&i.LastName,
|
||||
&i.Age,
|
||||
&i.JobStatus,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUsersByFamily = `-- name: ListUsersByFamily :many
|
||||
SELECT first_name, last_name FROM users WHERE age < $1 AND last_name = $2
|
||||
`
|
||||
|
||||
type ListUsersByFamilyParams struct {
|
||||
MaxAge int32
|
||||
InFamily pgtype.Text
|
||||
}
|
||||
|
||||
type ListUsersByFamilyRow struct {
|
||||
FirstName string
|
||||
LastName pgtype.Text
|
||||
}
|
||||
|
||||
func (q *Queries) ListUsersByFamily(ctx context.Context, arg ListUsersByFamilyParams) ([]ListUsersByFamilyRow, error) {
|
||||
rows, err := q.db.Query(ctx, listUsersByFamily, arg.MaxAge, arg.InFamily)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []ListUsersByFamilyRow
|
||||
for rows.Next() {
|
||||
var i ListUsersByFamilyRow
|
||||
if err := rows.Scan(&i.FirstName, &i.LastName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUsersByID = `-- name: ListUsersByID :many
|
||||
SELECT first_name, id, last_name FROM users WHERE id < $1
|
||||
`
|
||||
|
||||
type ListUsersByIDRow struct {
|
||||
FirstName string
|
||||
ID int32
|
||||
LastName pgtype.Text
|
||||
}
|
||||
|
||||
func (q *Queries) ListUsersByID(ctx context.Context, id int32) ([]ListUsersByIDRow, error) {
|
||||
rows, err := q.db.Query(ctx, listUsersByID, id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []ListUsersByIDRow
|
||||
for rows.Next() {
|
||||
var i ListUsersByIDRow
|
||||
if err := rows.Scan(&i.FirstName, &i.ID, &i.LastName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUsersWithLimit = `-- name: ListUsersWithLimit :many
|
||||
SELECT first_name, last_name FROM users LIMIT $1
|
||||
`
|
||||
|
||||
type ListUsersWithLimitRow struct {
|
||||
FirstName string
|
||||
LastName pgtype.Text
|
||||
}
|
||||
|
||||
func (q *Queries) ListUsersWithLimit(ctx context.Context, limit int32) ([]ListUsersWithLimitRow, error) {
|
||||
rows, err := q.db.Query(ctx, listUsersWithLimit, limit)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []ListUsersWithLimitRow
|
||||
for rows.Next() {
|
||||
var i ListUsersWithLimitRow
|
||||
if err := rows.Scan(&i.FirstName, &i.LastName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
33
internal/endtoend/testdata/params_location/postgresql/pgx/v5/query.sql
vendored
Normal file
33
internal/endtoend/testdata/params_location/postgresql/pgx/v5/query.sql
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
/* name: ListUsersByID :many */
|
||||
SELECT first_name, id, last_name FROM users WHERE id < $1;
|
||||
|
||||
/* name: ListUserOrders :many */
|
||||
SELECT
|
||||
users.id,
|
||||
users.first_name,
|
||||
orders.price
|
||||
FROM
|
||||
orders
|
||||
LEFT JOIN users ON orders.user_id = users.id
|
||||
WHERE orders.price > sqlc.arg('min_price');
|
||||
|
||||
/* name: GetUserByID :one */
|
||||
SELECT first_name, id, last_name FROM users WHERE id = sqlc.arg('target_id');
|
||||
|
||||
/* name: ListUsersByFamily :many */
|
||||
SELECT first_name, last_name FROM users WHERE age < sqlc.arg('max_age') AND last_name = sqlc.arg('in_family');
|
||||
|
||||
/* name: ListUsersWithLimit :many */
|
||||
SELECT first_name, last_name FROM users LIMIT $1;
|
||||
|
||||
/* name: LimitSQLCArg :many */
|
||||
select first_name, id FROM users LIMIT $1;
|
||||
|
||||
/* name: InsertNewUser :exec */
|
||||
INSERT INTO users (first_name, last_name) VALUES ($1, $2);
|
||||
|
||||
/* name: ListUserParenExpr :many */
|
||||
SELECT * FROM users WHERE (job_status = 'APPLIED' OR job_status = 'PENDING')
|
||||
AND id > $1
|
||||
ORDER BY id
|
||||
LIMIT $2;
|
||||
14
internal/endtoend/testdata/params_location/postgresql/pgx/v5/schema.sql
vendored
Normal file
14
internal/endtoend/testdata/params_location/postgresql/pgx/v5/schema.sql
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
CREATE TABLE users (
|
||||
id SERIAL NOT NULL,
|
||||
first_name varchar(255) NOT NULL,
|
||||
last_name varchar(255),
|
||||
age integer NOT NULL,
|
||||
job_status varchar(10) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE orders (
|
||||
id SERIAL NOT NULL,
|
||||
price DECIMAL(13, 4) NOT NULL,
|
||||
user_id integer NOT NULL
|
||||
);
|
||||
|
||||
13
internal/endtoend/testdata/params_location/postgresql/pgx/v5/sqlc.json
vendored
Normal file
13
internal/endtoend/testdata/params_location/postgresql/pgx/v5/sqlc.json
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"version": "1",
|
||||
"packages": [
|
||||
{
|
||||
"path": "go",
|
||||
"engine": "postgresql",
|
||||
"sql_package": "pgx/v5",
|
||||
"name": "querytest",
|
||||
"schema": "schema.sql",
|
||||
"queries": "query.sql"
|
||||
}
|
||||
]
|
||||
}
|
||||
3
internal/endtoend/testdata/params_location/postgresql/stdlib/exec.json
vendored
Normal file
3
internal/endtoend/testdata/params_location/postgresql/stdlib/exec.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"contexts": ["base"]
|
||||
}
|
||||
31
internal/endtoend/testdata/params_location/postgresql/stdlib/go/db.go
vendored
Normal file
31
internal/endtoend/testdata/params_location/postgresql/stdlib/go/db.go
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.31.1
|
||||
|
||||
package querytest
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
type DBTX interface {
|
||||
ExecContext(context.Context, string, ...any) (sql.Result, error)
|
||||
PrepareContext(context.Context, string) (*sql.Stmt, error)
|
||||
QueryContext(context.Context, string, ...any) (*sql.Rows, error)
|
||||
QueryRowContext(context.Context, string, ...any) *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,
|
||||
}
|
||||
}
|
||||
23
internal/endtoend/testdata/params_location/postgresql/stdlib/go/models.go
vendored
Normal file
23
internal/endtoend/testdata/params_location/postgresql/stdlib/go/models.go
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.31.1
|
||||
|
||||
package querytest
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
type Order struct {
|
||||
ID int32
|
||||
Price string
|
||||
UserID int32
|
||||
}
|
||||
|
||||
type User struct {
|
||||
ID int32
|
||||
FirstName string
|
||||
LastName sql.NullString
|
||||
Age int32
|
||||
JobStatus string
|
||||
}
|
||||
257
internal/endtoend/testdata/params_location/postgresql/stdlib/go/query.sql.go
vendored
Normal file
257
internal/endtoend/testdata/params_location/postgresql/stdlib/go/query.sql.go
vendored
Normal file
@@ -0,0 +1,257 @@
|
||||
// Code generated by sqlc. DO NOT EDIT.
|
||||
// versions:
|
||||
// sqlc v1.31.1
|
||||
// source: query.sql
|
||||
|
||||
package querytest
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
const getUserByID = `-- name: GetUserByID :one
|
||||
SELECT first_name, id, last_name FROM users WHERE id = $1
|
||||
`
|
||||
|
||||
type GetUserByIDRow struct {
|
||||
FirstName string
|
||||
ID int32
|
||||
LastName sql.NullString
|
||||
}
|
||||
|
||||
func (q *Queries) GetUserByID(ctx context.Context, targetID int32) (GetUserByIDRow, error) {
|
||||
row := q.db.QueryRowContext(ctx, getUserByID, targetID)
|
||||
var i GetUserByIDRow
|
||||
err := row.Scan(&i.FirstName, &i.ID, &i.LastName)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const insertNewUser = `-- name: InsertNewUser :exec
|
||||
INSERT INTO users (first_name, last_name) VALUES ($1, $2)
|
||||
`
|
||||
|
||||
type InsertNewUserParams struct {
|
||||
FirstName string
|
||||
LastName sql.NullString
|
||||
}
|
||||
|
||||
func (q *Queries) InsertNewUser(ctx context.Context, arg InsertNewUserParams) error {
|
||||
_, err := q.db.ExecContext(ctx, insertNewUser, arg.FirstName, arg.LastName)
|
||||
return err
|
||||
}
|
||||
|
||||
const limitSQLCArg = `-- name: LimitSQLCArg :many
|
||||
select first_name, id FROM users LIMIT $1
|
||||
`
|
||||
|
||||
type LimitSQLCArgRow struct {
|
||||
FirstName string
|
||||
ID int32
|
||||
}
|
||||
|
||||
func (q *Queries) LimitSQLCArg(ctx context.Context, limit int32) ([]LimitSQLCArgRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, limitSQLCArg, limit)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []LimitSQLCArgRow
|
||||
for rows.Next() {
|
||||
var i LimitSQLCArgRow
|
||||
if err := rows.Scan(&i.FirstName, &i.ID); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUserOrders = `-- name: ListUserOrders :many
|
||||
SELECT
|
||||
users.id,
|
||||
users.first_name,
|
||||
orders.price
|
||||
FROM
|
||||
orders
|
||||
LEFT JOIN users ON orders.user_id = users.id
|
||||
WHERE orders.price > $1
|
||||
`
|
||||
|
||||
type ListUserOrdersRow struct {
|
||||
ID sql.NullInt32
|
||||
FirstName sql.NullString
|
||||
Price string
|
||||
}
|
||||
|
||||
func (q *Queries) ListUserOrders(ctx context.Context, minPrice string) ([]ListUserOrdersRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, listUserOrders, minPrice)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []ListUserOrdersRow
|
||||
for rows.Next() {
|
||||
var i ListUserOrdersRow
|
||||
if err := rows.Scan(&i.ID, &i.FirstName, &i.Price); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUserParenExpr = `-- name: ListUserParenExpr :many
|
||||
SELECT id, first_name, last_name, age, job_status FROM users WHERE (job_status = 'APPLIED' OR job_status = 'PENDING')
|
||||
AND id > $1
|
||||
ORDER BY id
|
||||
LIMIT $2
|
||||
`
|
||||
|
||||
type ListUserParenExprParams struct {
|
||||
ID int32
|
||||
Limit int32
|
||||
}
|
||||
|
||||
func (q *Queries) ListUserParenExpr(ctx context.Context, arg ListUserParenExprParams) ([]User, error) {
|
||||
rows, err := q.db.QueryContext(ctx, listUserParenExpr, arg.ID, arg.Limit)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []User
|
||||
for rows.Next() {
|
||||
var i User
|
||||
if err := rows.Scan(
|
||||
&i.ID,
|
||||
&i.FirstName,
|
||||
&i.LastName,
|
||||
&i.Age,
|
||||
&i.JobStatus,
|
||||
); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUsersByFamily = `-- name: ListUsersByFamily :many
|
||||
SELECT first_name, last_name FROM users WHERE age < $1 AND last_name = $2
|
||||
`
|
||||
|
||||
type ListUsersByFamilyParams struct {
|
||||
MaxAge int32
|
||||
InFamily sql.NullString
|
||||
}
|
||||
|
||||
type ListUsersByFamilyRow struct {
|
||||
FirstName string
|
||||
LastName sql.NullString
|
||||
}
|
||||
|
||||
func (q *Queries) ListUsersByFamily(ctx context.Context, arg ListUsersByFamilyParams) ([]ListUsersByFamilyRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, listUsersByFamily, arg.MaxAge, arg.InFamily)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []ListUsersByFamilyRow
|
||||
for rows.Next() {
|
||||
var i ListUsersByFamilyRow
|
||||
if err := rows.Scan(&i.FirstName, &i.LastName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUsersByID = `-- name: ListUsersByID :many
|
||||
SELECT first_name, id, last_name FROM users WHERE id < $1
|
||||
`
|
||||
|
||||
type ListUsersByIDRow struct {
|
||||
FirstName string
|
||||
ID int32
|
||||
LastName sql.NullString
|
||||
}
|
||||
|
||||
func (q *Queries) ListUsersByID(ctx context.Context, id int32) ([]ListUsersByIDRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, listUsersByID, id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []ListUsersByIDRow
|
||||
for rows.Next() {
|
||||
var i ListUsersByIDRow
|
||||
if err := rows.Scan(&i.FirstName, &i.ID, &i.LastName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const listUsersWithLimit = `-- name: ListUsersWithLimit :many
|
||||
SELECT first_name, last_name FROM users LIMIT $1
|
||||
`
|
||||
|
||||
type ListUsersWithLimitRow struct {
|
||||
FirstName string
|
||||
LastName sql.NullString
|
||||
}
|
||||
|
||||
func (q *Queries) ListUsersWithLimit(ctx context.Context, limit int32) ([]ListUsersWithLimitRow, error) {
|
||||
rows, err := q.db.QueryContext(ctx, listUsersWithLimit, limit)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
var items []ListUsersWithLimitRow
|
||||
for rows.Next() {
|
||||
var i ListUsersWithLimitRow
|
||||
if err := rows.Scan(&i.FirstName, &i.LastName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
items = append(items, i)
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
33
internal/endtoend/testdata/params_location/postgresql/stdlib/query.sql
vendored
Normal file
33
internal/endtoend/testdata/params_location/postgresql/stdlib/query.sql
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
/* name: ListUsersByID :many */
|
||||
SELECT first_name, id, last_name FROM users WHERE id < $1;
|
||||
|
||||
/* name: ListUserOrders :many */
|
||||
SELECT
|
||||
users.id,
|
||||
users.first_name,
|
||||
orders.price
|
||||
FROM
|
||||
orders
|
||||
LEFT JOIN users ON orders.user_id = users.id
|
||||
WHERE orders.price > sqlc.arg('min_price');
|
||||
|
||||
/* name: GetUserByID :one */
|
||||
SELECT first_name, id, last_name FROM users WHERE id = sqlc.arg('target_id');
|
||||
|
||||
/* name: ListUsersByFamily :many */
|
||||
SELECT first_name, last_name FROM users WHERE age < sqlc.arg('max_age') AND last_name = sqlc.arg('in_family');
|
||||
|
||||
/* name: ListUsersWithLimit :many */
|
||||
SELECT first_name, last_name FROM users LIMIT $1;
|
||||
|
||||
/* name: LimitSQLCArg :many */
|
||||
select first_name, id FROM users LIMIT $1;
|
||||
|
||||
/* name: InsertNewUser :exec */
|
||||
INSERT INTO users (first_name, last_name) VALUES ($1, $2);
|
||||
|
||||
/* name: ListUserParenExpr :many */
|
||||
SELECT * FROM users WHERE (job_status = 'APPLIED' OR job_status = 'PENDING')
|
||||
AND id > $1
|
||||
ORDER BY id
|
||||
LIMIT $2;
|
||||
14
internal/endtoend/testdata/params_location/postgresql/stdlib/schema.sql
vendored
Normal file
14
internal/endtoend/testdata/params_location/postgresql/stdlib/schema.sql
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
CREATE TABLE users (
|
||||
id SERIAL NOT NULL,
|
||||
first_name varchar(255) NOT NULL,
|
||||
last_name varchar(255),
|
||||
age integer NOT NULL,
|
||||
job_status varchar(10) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE orders (
|
||||
id SERIAL NOT NULL,
|
||||
price DECIMAL(13, 4) NOT NULL,
|
||||
user_id integer NOT NULL
|
||||
);
|
||||
|
||||
12
internal/endtoend/testdata/params_location/postgresql/stdlib/sqlc.json
vendored
Normal file
12
internal/endtoend/testdata/params_location/postgresql/stdlib/sqlc.json
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"version": "1",
|
||||
"packages": [
|
||||
{
|
||||
"name": "querytest",
|
||||
"path": "go",
|
||||
"schema": "schema.sql",
|
||||
"queries": "query.sql",
|
||||
"engine": "postgresql"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user