1// +build go1.8 2 3package squirrel 4 5import ( 6 "context" 7 "database/sql" 8 9 "github.com/lann/builder" 10) 11 12func (d *insertData) ExecContext(ctx context.Context) (sql.Result, error) { 13 if d.RunWith == nil { 14 return nil, RunnerNotSet 15 } 16 ctxRunner, ok := d.RunWith.(ExecerContext) 17 if !ok { 18 return nil, NoContextSupport 19 } 20 return ExecContextWith(ctx, ctxRunner, d) 21} 22 23func (d *insertData) QueryContext(ctx context.Context) (*sql.Rows, error) { 24 if d.RunWith == nil { 25 return nil, RunnerNotSet 26 } 27 ctxRunner, ok := d.RunWith.(QueryerContext) 28 if !ok { 29 return nil, NoContextSupport 30 } 31 return QueryContextWith(ctx, ctxRunner, d) 32} 33 34func (d *insertData) QueryRowContext(ctx context.Context) RowScanner { 35 if d.RunWith == nil { 36 return &Row{err: RunnerNotSet} 37 } 38 queryRower, ok := d.RunWith.(QueryRowerContext) 39 if !ok { 40 if _, ok := d.RunWith.(QueryerContext); !ok { 41 return &Row{err: RunnerNotQueryRunner} 42 } 43 return &Row{err: NoContextSupport} 44 } 45 return QueryRowContextWith(ctx, queryRower, d) 46} 47 48// ExecContext builds and ExecContexts the query with the Runner set by RunWith. 49func (b InsertBuilder) ExecContext(ctx context.Context) (sql.Result, error) { 50 data := builder.GetStruct(b).(insertData) 51 return data.ExecContext(ctx) 52} 53 54// QueryContext builds and QueryContexts the query with the Runner set by RunWith. 55func (b InsertBuilder) QueryContext(ctx context.Context) (*sql.Rows, error) { 56 data := builder.GetStruct(b).(insertData) 57 return data.QueryContext(ctx) 58} 59 60// QueryRowContext builds and QueryRowContexts the query with the Runner set by RunWith. 61func (b InsertBuilder) QueryRowContext(ctx context.Context) RowScanner { 62 data := builder.GetStruct(b).(insertData) 63 return data.QueryRowContext(ctx) 64} 65 66// ScanContext is a shortcut for QueryRowContext().Scan. 67func (b InsertBuilder) ScanContext(ctx context.Context, dest ...interface{}) error { 68 return b.QueryRowContext(ctx).Scan(dest...) 69} 70