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  }