// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.23.0
// source: query.sql

package querytest

import (
	"context"

	"github.com/jackc/pgx/v5/pgtype"
)

const getAll = `-- name: GetAll :many
SELECT id, parent_id FROM L
`

func (q *Queries) GetAll(ctx context.Context) ([]L, error) {
	rows, err := q.db.Query(ctx, getAll)
	if err != nil {
		return nil, err
	}
	defer rows.Close()
	var items []L
	for rows.Next() {
		var i L
		if err := rows.Scan(&i.ID, &i.ParentID); err != nil {
			return nil, err
		}
		items = append(items, i)
	}
	if err := rows.Err(); err != nil {
		return nil, err
	}
	return items, nil
}

const getAll1 = `-- name: GetAll1 :many
with recursive cte as (
  select id, L_ID, F from T
  union all
  select c.id, c.L_ID, c.F from T as c where c.L_ID = $1
) select id, l_id, f from cte
`

type GetAll1Row struct {
	ID  int64
	LID pgtype.Int4
	F   pgtype.Text
}

func (q *Queries) GetAll1(ctx context.Context, lID pgtype.Int4) ([]GetAll1Row, error) {
	rows, err := q.db.Query(ctx, getAll1, lID)
	if err != nil {
		return nil, err
	}
	defer rows.Close()
	var items []GetAll1Row
	for rows.Next() {
		var i GetAll1Row
		if err := rows.Scan(&i.ID, &i.LID, &i.F); err != nil {
			return nil, err
		}
		items = append(items, i)
	}
	if err := rows.Err(); err != nil {
		return nil, err
	}
	return items, nil
}

const getAll2 = `-- name: GetAll2 :many
with recursive cte as (
  select id, L_ID, F from T where T.ID=2
  union all
  select c.id, c.L_ID, c.F from T as c where c.L_ID = $1
) select id, l_id, f from cte
`

type GetAll2Row struct {
	ID  int64
	LID pgtype.Int4
	F   pgtype.Text
}

func (q *Queries) GetAll2(ctx context.Context, lID pgtype.Int4) ([]GetAll2Row, error) {
	rows, err := q.db.Query(ctx, getAll2, lID)
	if err != nil {
		return nil, err
	}
	defer rows.Close()
	var items []GetAll2Row
	for rows.Next() {
		var i GetAll2Row
		if err := rows.Scan(&i.ID, &i.LID, &i.F); err != nil {
			return nil, err
		}
		items = append(items, i)
	}
	if err := rows.Err(); err != nil {
		return nil, err
	}
	return items, nil
}

const getAll3 = `-- name: GetAll3 :many
select id from T where L_ID in(
  with recursive cte as (
    select id, L_ID, F from T where T.ID =2
    union all
    select c.id, c.L_ID, c.F from T as c where c.L_ID = $1
 ) select l_id from cte
)
`

func (q *Queries) GetAll3(ctx context.Context, dollar_1 pgtype.Int4) ([]int64, error) {
	rows, err := q.db.Query(ctx, getAll3, dollar_1)
	if err != nil {
		return nil, err
	}
	defer rows.Close()
	var items []int64
	for rows.Next() {
		var id int64
		if err := rows.Scan(&id); err != nil {
			return nil, err
		}
		items = append(items, id)
	}
	if err := rows.Err(); err != nil {
		return nil, err
	}
	return items, nil
}

const getAll4 = `-- name: GetAll4 :many
select id from T where L_ID in(
  with recursive L as (
    select id, L_ID, F from T where T.ID =2
    union all
    select c.id, c.L_ID, c.F from T as c where c.L_ID = $1
 ) select l_id from L
)
`

func (q *Queries) GetAll4(ctx context.Context, lID pgtype.Int4) ([]int64, error) {
	rows, err := q.db.Query(ctx, getAll4, lID)
	if err != nil {
		return nil, err
	}
	defer rows.Close()
	var items []int64
	for rows.Next() {
		var id int64
		if err := rows.Scan(&id); err != nil {
			return nil, err
		}
		items = append(items, id)
	}
	if err := rows.Err(); err != nil {
		return nil, err
	}
	return items, nil
}
