github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/sugar/example_test.go (about)

     1  package sugar_test
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"github.com/ydb-platform/ydb-go-sdk/v3"
     8  	"github.com/ydb-platform/ydb-go-sdk/v3/sugar"
     9  )
    10  
    11  func Example_unmarshallRow() {
    12  	ctx := context.TODO()
    13  	db, err := ydb.Open(ctx, "grpc://localhost:2136/local")
    14  	if err != nil {
    15  		panic(err)
    16  	}
    17  	defer db.Close(ctx) // cleanup resources
    18  
    19  	type myStruct struct {
    20  		ID  int32  `sql:"id"`
    21  		Str string `sql:"myStr"`
    22  	}
    23  
    24  	row, err := db.Query().QueryRow(ctx, `SELECT 42 as id, "my string" as myStr`)
    25  	if err != nil {
    26  		panic(err)
    27  	}
    28  
    29  	one, err := sugar.UnmarshallRow[*myStruct](row)
    30  	if err != nil {
    31  		panic(err)
    32  	}
    33  
    34  	fmt.Printf("one = %+v\n", one)
    35  	// one = &{ID:42 Str:my string}
    36  }
    37  
    38  func Example_unmarshallResultSet() {
    39  	ctx := context.TODO()
    40  	db, err := ydb.Open(ctx, "grpc://localhost:2136/local")
    41  	if err != nil {
    42  		panic(err)
    43  	}
    44  	defer db.Close(ctx) // cleanup resources
    45  
    46  	type myStruct struct {
    47  		ID  int32  `sql:"id"`
    48  		Str string `sql:"myStr"`
    49  	}
    50  
    51  	rows, err := db.Query().QueryResultSet(ctx, `
    52  		SELECT 42 as id, "myStr42" as myStr
    53  		UNION
    54  		SELECT 43 as id, "myStr43" as myStr
    55  		ORDER BY id
    56  	`)
    57  	if err != nil {
    58  		panic(err)
    59  	}
    60  
    61  	many, err := sugar.UnmarshallResultSet[myStruct](rows)
    62  	if err != nil {
    63  		panic(err)
    64  	}
    65  
    66  	fmt.Print("many = [")
    67  	for i, s := range many {
    68  		if i > 0 {
    69  			fmt.Print(",")
    70  		}
    71  		fmt.Printf("\n\t%+v", s)
    72  	}
    73  	fmt.Println("\n]")
    74  	// many = [
    75  	//	&{ID:42 Str:myStr42},
    76  	//	&{ID:43 Str:myStr43}
    77  	//]
    78  }