github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/query/options/execute_script.go (about) 1 package options 2 3 import ( 4 "github.com/ydb-platform/ydb-go-genproto/protos/Ydb_Query" 5 "google.golang.org/protobuf/types/known/anypb" 6 7 "github.com/ydb-platform/ydb-go-sdk/v3/internal/query/result" 8 "github.com/ydb-platform/ydb-go-sdk/v3/internal/stats" 9 "github.com/ydb-platform/ydb-go-sdk/v3/internal/types" 10 "github.com/ydb-platform/ydb-go-sdk/v3/trace" 11 ) 12 13 type ( 14 FetchScriptResultsRequest struct { 15 Ydb_Query.FetchScriptResultsRequest 16 17 Trace *trace.Query 18 } 19 FetchScriptOption func(request *FetchScriptResultsRequest) 20 ExecuteScriptOperation struct { 21 ID string 22 ConsumedUnits float64 23 Metadata *MetadataExecuteQuery 24 } 25 FetchScriptResult struct { 26 ResultSetIndex int64 27 ResultSet result.Set 28 NextToken string 29 } 30 MetadataExecuteQuery struct { 31 ID string 32 Script struct { 33 Syntax Syntax 34 Query string 35 } 36 Mode ExecMode 37 Stats stats.QueryStats 38 ResultSetsMeta []struct { 39 Columns []struct { 40 Name string 41 Type types.Type 42 } 43 } 44 } 45 ) 46 47 func WithFetchToken(fetchToken string) FetchScriptOption { 48 return func(request *FetchScriptResultsRequest) { 49 request.FetchToken = fetchToken 50 } 51 } 52 53 func WithResultSetIndex(resultSetIndex int64) FetchScriptOption { 54 return func(request *FetchScriptResultsRequest) { 55 request.ResultSetIndex = resultSetIndex 56 } 57 } 58 59 func WithRowsLimit(rowsLimit int64) FetchScriptOption { 60 return func(request *FetchScriptResultsRequest) { 61 request.RowsLimit = rowsLimit 62 } 63 } 64 65 func ToMetadataExecuteQuery(metadata *anypb.Any) *MetadataExecuteQuery { 66 var pb Ydb_Query.ExecuteScriptMetadata 67 if err := metadata.UnmarshalTo(&pb); err != nil { 68 panic(err) 69 } 70 71 return &MetadataExecuteQuery{ 72 ID: pb.GetExecutionId(), 73 Script: struct { 74 Syntax Syntax 75 Query string 76 }{ 77 Syntax: Syntax(pb.GetScriptContent().GetSyntax()), 78 Query: pb.GetScriptContent().GetText(), 79 }, 80 Mode: ExecMode(pb.GetExecMode()), 81 Stats: stats.FromQueryStats(pb.GetExecStats()), 82 ResultSetsMeta: func() ( 83 resultSetsMeta []struct { 84 Columns []struct { 85 Name string 86 Type types.Type 87 } 88 }, 89 ) { 90 for _, rs := range pb.GetResultSetsMeta() { 91 resultSetsMeta = append(resultSetsMeta, struct { 92 Columns []struct { 93 Name string 94 Type types.Type 95 } 96 }{ 97 Columns: func() ( 98 columns []struct { 99 Name string 100 Type types.Type 101 }, 102 ) { 103 for _, c := range rs.GetColumns() { 104 columns = append(columns, struct { 105 Name string 106 Type types.Type 107 }{ 108 Name: c.GetName(), 109 Type: types.TypeFromYDB(c.GetType()), 110 }) 111 } 112 113 return columns 114 }(), 115 }) 116 } 117 118 return resultSetsMeta 119 }(), 120 } 121 }