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 }