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

     1  package instrumented
     2  
     3  import (
     4  	"context"
     5  	"database/sql/driver"
     6  	"reflect"
     7  )
     8  
     9  // Rows :
    10  type Rows interface {
    11  	driver.RowsNextResultSet
    12  	ColumnTypeScanType(index int) reflect.Type
    13  }
    14  
    15  type wrappedRows struct {
    16  	ctx  context.Context
    17  	itpr Interceptor
    18  	rows Rows
    19  }
    20  
    21  var _ Rows = (*wrappedRows)(nil)
    22  
    23  // Columns :
    24  func (w wrappedRows) Columns() []string {
    25  	return w.rows.Columns()
    26  }
    27  
    28  // Next :
    29  func (w wrappedRows) Next(dest []driver.Value) error {
    30  	return w.itpr.RowsNext(w.ctx, w.rows, dest)
    31  }
    32  
    33  // HasNextResultSet :
    34  func (w wrappedRows) HasNextResultSet() bool {
    35  	return w.rows.HasNextResultSet()
    36  }
    37  
    38  // NextResultSet :
    39  func (w wrappedRows) NextResultSet() error {
    40  	return w.rows.NextResultSet()
    41  }
    42  
    43  // ColumnTypeScanType :
    44  func (w wrappedRows) ColumnTypeScanType(index int) reflect.Type {
    45  	return w.rows.ColumnTypeScanType(index)
    46  }
    47  
    48  // Close :
    49  func (w wrappedRows) Close() error {
    50  	return w.rows.Close()
    51  }