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 }