github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/query/row.go (about)

     1  package query
     2  
     3  import (
     4  	"github.com/ydb-platform/ydb-go-genproto/protos/Ydb"
     5  
     6  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/query/scanner"
     7  	"github.com/ydb-platform/ydb-go-sdk/v3/query"
     8  )
     9  
    10  var _ query.Row = (*Row)(nil)
    11  
    12  type Row struct {
    13  	indexedScanner scanner.IndexedScanner
    14  	namedScanner   scanner.NamedScanner
    15  	structScanner  scanner.StructScanner
    16  }
    17  
    18  func NewRow(columns []*Ydb.Column, v *Ydb.Value) *Row {
    19  	data := scanner.Data(columns, v.GetItems())
    20  
    21  	return &Row{
    22  		indexedScanner: scanner.Indexed(data),
    23  		namedScanner:   scanner.Named(data),
    24  		structScanner:  scanner.Struct(data),
    25  	}
    26  }
    27  
    28  func (r Row) Scan(dst ...interface{}) (err error) {
    29  	return r.indexedScanner.Scan(dst...)
    30  }
    31  
    32  func (r Row) ScanNamed(dst ...scanner.NamedDestination) (err error) {
    33  	return r.namedScanner.ScanNamed(dst...)
    34  }
    35  
    36  func (r Row) ScanStruct(dst interface{}, opts ...scanner.ScanStructOption) (err error) {
    37  	return r.structScanner.ScanStruct(dst, opts...)
    38  }