github.com/acoshift/pgsql@v0.15.3/pgstmt/result.go (about)

     1  package pgstmt
     2  
     3  import (
     4  	"context"
     5  	"database/sql"
     6  
     7  	"github.com/acoshift/pgsql"
     8  	"github.com/acoshift/pgsql/pgctx"
     9  )
    10  
    11  type Result struct {
    12  	query string
    13  	args  []any
    14  }
    15  
    16  func newResult(query string, args []any) *Result {
    17  	return &Result{query, args}
    18  }
    19  
    20  func (r *Result) SQL() (query string, args []any) {
    21  	return r.query, r.args
    22  }
    23  
    24  func (r *Result) QueryRow(f func(string, ...any) *sql.Row) *pgsql.Row {
    25  	return &pgsql.Row{f(r.query, r.args...)}
    26  }
    27  
    28  func (r *Result) Query(f func(string, ...any) (*sql.Rows, error)) (*pgsql.Rows, error) {
    29  	rows, err := f(r.query, r.args...)
    30  	if err != nil {
    31  		return nil, err
    32  	}
    33  	return &pgsql.Rows{rows}, nil
    34  }
    35  
    36  func (r *Result) Exec(f func(string, ...any) (sql.Result, error)) (sql.Result, error) {
    37  	return f(r.query, r.args...)
    38  }
    39  
    40  func (r *Result) QueryRowContext(ctx context.Context, f func(context.Context, string, ...any) *sql.Row) *pgsql.Row {
    41  	return &pgsql.Row{f(ctx, r.query, r.args...)}
    42  }
    43  
    44  func (r *Result) QueryContext(ctx context.Context, f func(context.Context, string, ...any) (*sql.Rows, error)) (*pgsql.Rows, error) {
    45  	rows, err := f(ctx, r.query, r.args...)
    46  	if err != nil {
    47  		return nil, err
    48  	}
    49  	return &pgsql.Rows{rows}, nil
    50  }
    51  
    52  func (r *Result) ExecContext(ctx context.Context, f func(context.Context, string, ...any) (sql.Result, error)) (sql.Result, error) {
    53  	return f(ctx, r.query, r.args...)
    54  }
    55  
    56  func (r *Result) QueryRowWith(ctx context.Context) *pgsql.Row {
    57  	return pgctx.QueryRow(ctx, r.query, r.args...)
    58  }
    59  
    60  func (r *Result) QueryWith(ctx context.Context) (*pgsql.Rows, error) {
    61  	return pgctx.Query(ctx, r.query, r.args...)
    62  }
    63  
    64  func (r *Result) ExecWith(ctx context.Context) (sql.Result, error) {
    65  	return pgctx.Exec(ctx, r.query, r.args...)
    66  }
    67  
    68  func (r *Result) IterWith(ctx context.Context, iter pgsql.Iterator) error {
    69  	return pgctx.Iter(ctx, iter, r.query, r.args...)
    70  }