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 }