github.com/RevenueMonster/sqlike@v1.0.6/sql/instrumented/instrumented.go (about)

     1  package instrumented
     2  
     3  import (
     4  	"context"
     5  	"database/sql/driver"
     6  )
     7  
     8  type wrappedConnector struct {
     9  	conn driver.Connector
    10  	itpr Interceptor
    11  }
    12  
    13  // WrapConnector :
    14  func WrapConnector(conn driver.Connector, itpr Interceptor) driver.Connector {
    15  	return wrappedConnector{conn: conn, itpr: itpr}
    16  }
    17  
    18  // Connect :
    19  func (w wrappedConnector) Connect(ctx context.Context) (driver.Conn, error) {
    20  	conn, err := w.conn.Connect(ctx)
    21  	if err != nil {
    22  		return nil, err
    23  	}
    24  	c, ok := conn.(Conn)
    25  	if !ok {
    26  		return nil, driver.ErrBadConn
    27  	}
    28  	return wrappedConn{conn: c, itpr: w.itpr}, nil
    29  }
    30  
    31  // Driver :
    32  func (w wrappedConnector) Driver() driver.Driver {
    33  	return wrappedDriver{dvr: w.conn.Driver(), itpr: w.itpr}
    34  }