github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/internal/operation/metadata/metadata.go (about) 1 package metadata 2 3 import ( 4 "github.com/ydb-platform/ydb-go-genproto/protos/Ydb_Export" 5 "github.com/ydb-platform/ydb-go-genproto/protos/Ydb_Import" 6 "github.com/ydb-platform/ydb-go-genproto/protos/Ydb_Table" 7 "google.golang.org/protobuf/types/known/anypb" 8 9 "github.com/ydb-platform/ydb-go-sdk/v3/internal/query/options" 10 ) 11 12 type ( 13 TypesConstraint interface { 14 BuildIndex | ImportFromS3 | ExportToS3 | ExportToYT | ExecuteQuery 15 } 16 Constraint[T TypesConstraint] interface { 17 fromProto(metadata *anypb.Any) *T 18 } 19 BuildIndex struct { 20 Description string 21 State string 22 Progress float32 23 } 24 ImportFromS3 struct { 25 Settings string 26 Status string 27 Items []string 28 } 29 ExportToS3 struct { 30 Settings string 31 Status string 32 Items []string 33 } 34 ExportToYT struct { 35 Settings string 36 Status string 37 Items []string 38 } 39 ExecuteQuery options.MetadataExecuteQuery 40 ) 41 42 func (*ImportFromS3) fromProto(metadata *anypb.Any) *ImportFromS3 { //nolint:unused 43 var pb Ydb_Import.ImportFromS3Metadata 44 if err := metadata.UnmarshalTo(&pb); err != nil { 45 panic(err) 46 } 47 48 return &ImportFromS3{ 49 Settings: pb.GetSettings().String(), 50 Status: pb.GetProgress().String(), 51 Items: func() (items []string) { 52 for _, item := range pb.GetItemsProgress() { 53 items = append(items, item.String()) 54 } 55 56 return items 57 }(), 58 } 59 } 60 61 func (*ExportToS3) fromProto(metadata *anypb.Any) *ExportToS3 { //nolint:unused 62 var pb Ydb_Export.ExportToS3Metadata 63 if err := metadata.UnmarshalTo(&pb); err != nil { 64 panic(err) 65 } 66 67 return &ExportToS3{ 68 Settings: pb.GetSettings().String(), 69 Status: pb.GetProgress().String(), 70 Items: func() (items []string) { 71 for _, item := range pb.GetItemsProgress() { 72 items = append(items, item.String()) 73 } 74 75 return items 76 }(), 77 } 78 } 79 80 func (*ExportToYT) fromProto(metadata *anypb.Any) *ExportToYT { //nolint:unused 81 var pb Ydb_Export.ExportToYtMetadata 82 if err := metadata.UnmarshalTo(&pb); err != nil { 83 panic(err) 84 } 85 86 return &ExportToYT{ 87 Settings: pb.GetSettings().String(), 88 Status: pb.GetProgress().String(), 89 Items: func() (items []string) { 90 for _, item := range pb.GetItemsProgress() { 91 items = append(items, item.String()) 92 } 93 94 return items 95 }(), 96 } 97 } 98 99 func (*ExecuteQuery) fromProto(metadata *anypb.Any) *ExecuteQuery { //nolint:unused 100 return (*ExecuteQuery)(options.ToMetadataExecuteQuery(metadata)) 101 } 102 103 func (*BuildIndex) fromProto(metadata *anypb.Any) *BuildIndex { //nolint:unused 104 var pb Ydb_Table.IndexBuildMetadata 105 if err := metadata.UnmarshalTo(&pb); err != nil { 106 panic(err) 107 } 108 109 return &BuildIndex{ 110 Description: pb.GetDescription().String(), 111 State: pb.GetState().String(), 112 Progress: pb.GetProgress(), 113 } 114 } 115 116 func FromProto[PT Constraint[T], T TypesConstraint](metadata *anypb.Any) *T { 117 var pt PT 118 119 return pt.fromProto(metadata) 120 }