github.com/RevenueMonster/sqlike@v1.0.6/plugin/opentracing/conn.go (about) 1 package opentracing 2 3 import ( 4 "context" 5 "database/sql/driver" 6 7 "github.com/opentracing/opentracing-go" 8 ) 9 10 // ConnPing : 11 func (ot *OpenTracingInterceptor) ConnPing(ctx context.Context, conn driver.Pinger) (err error) { 12 if ot.opts.Ping { 13 var span opentracing.Span 14 span, ctx = ot.MaybeStartSpanFromContext(ctx, "ping") 15 defer func() { 16 ot.logError(span, err) 17 span.Finish() 18 }() 19 } 20 err = conn.Ping(ctx) 21 return 22 } 23 24 // ConnBeginTx : 25 func (ot *OpenTracingInterceptor) ConnBeginTx(ctx context.Context, conn driver.ConnBeginTx, opts driver.TxOptions) (tx driver.Tx, err error) { 26 if ot.opts.BeginTx { 27 var span opentracing.Span 28 span, ctx = ot.MaybeStartSpanFromContext(ctx, "begin_tx") 29 defer func() { 30 ot.logError(span, err) 31 span.Finish() 32 }() 33 } 34 tx, err = conn.BeginTx(ctx, opts) 35 return 36 } 37 38 // ConnPrepareContext : 39 func (ot *OpenTracingInterceptor) ConnPrepareContext(ctx context.Context, conn driver.ConnPrepareContext, query string) (stmt driver.Stmt, err error) { 40 if ot.opts.Prepare { 41 var span opentracing.Span 42 span, ctx = ot.MaybeStartSpanFromContext(ctx, "prepare") 43 // ext.DBStatement.Set(span, query) 44 ot.logQuery(span, query) 45 defer func() { 46 ot.logError(span, err) 47 span.Finish() 48 }() 49 } 50 stmt, err = conn.PrepareContext(ctx, query) 51 return 52 }