github.com/RevenueMonster/sqlike@v1.0.6/plugin/opentracing/stmt.go (about)

     1  package opentracing
     2  
     3  import (
     4  	"context"
     5  	"database/sql/driver"
     6  
     7  	"github.com/opentracing/opentracing-go"
     8  )
     9  
    10  // StmtExecContext :
    11  func (ot *OpenTracingInterceptor) StmtExecContext(ctx context.Context, conn driver.StmtExecContext, query string, args []driver.NamedValue) (result driver.Result, err error) {
    12  	if ot.opts.Exec {
    13  		var span opentracing.Span
    14  		span, ctx = ot.MaybeStartSpanFromContext(ctx, "stmt_exec")
    15  		ot.logQueryArgs(span, query, args)
    16  		defer func() {
    17  			ot.logError(span, err)
    18  			span.Finish()
    19  		}()
    20  	}
    21  	result, err = conn.ExecContext(ctx, args)
    22  	return
    23  }
    24  
    25  // StmtQueryContext :
    26  func (ot *OpenTracingInterceptor) StmtQueryContext(ctx context.Context, conn driver.StmtQueryContext, query string, args []driver.NamedValue) (rows driver.Rows, err error) {
    27  	if ot.opts.Query {
    28  		var span opentracing.Span
    29  		span, ctx = ot.MaybeStartSpanFromContext(ctx, "stmt_query")
    30  		ot.logQueryArgs(span, query, args)
    31  		defer func() {
    32  			ot.logError(span, err)
    33  			span.Finish()
    34  		}()
    35  	}
    36  	rows, err = conn.QueryContext(ctx, args)
    37  	return
    38  }
    39  
    40  // StmtClose :
    41  func (ot *OpenTracingInterceptor) StmtClose(ctx context.Context, conn driver.Stmt) (err error) {
    42  	if ot.opts.RowsClose {
    43  		span, _ := ot.MaybeStartSpanFromContext(ctx, "stmt_close")
    44  		defer func() {
    45  			ot.logError(span, err)
    46  			span.Finish()
    47  		}()
    48  	}
    49  	err = conn.Close()
    50  	return nil
    51  }