github.com/ydb-platform/ydb-go-sdk/v3@v3.57.0/internal/grpcwrapper/rawoptional/rawoptional.go (about)

     1  package rawoptional
     2  
     3  import (
     4  	"time"
     5  
     6  	"google.golang.org/protobuf/types/known/durationpb"
     7  	"google.golang.org/protobuf/types/known/timestamppb"
     8  )
     9  
    10  type Bool struct {
    11  	Value    bool
    12  	HasValue bool
    13  }
    14  
    15  func (b *Bool) ToProto() *bool {
    16  	if !b.HasValue {
    17  		return nil
    18  	}
    19  
    20  	val := b.Value
    21  
    22  	return &val
    23  }
    24  
    25  type Duration struct {
    26  	Value    time.Duration
    27  	HasValue bool
    28  }
    29  
    30  func (v *Duration) ToProto() *durationpb.Duration {
    31  	if v.HasValue {
    32  		return durationpb.New(v.Value)
    33  	}
    34  
    35  	return nil
    36  }
    37  
    38  type Int64 struct {
    39  	Value    int64
    40  	HasValue bool
    41  }
    42  
    43  func (v *Int64) ToProto() *int64 {
    44  	if !v.HasValue {
    45  		return nil
    46  	}
    47  
    48  	val := v.Value
    49  
    50  	return &val
    51  }
    52  
    53  type Time struct {
    54  	Value    time.Time
    55  	HasValue bool
    56  }
    57  
    58  func (v *Time) ToProto() *timestamppb.Timestamp {
    59  	if v.HasValue {
    60  		return timestamppb.New(v.Value)
    61  	}
    62  
    63  	return nil
    64  }
    65  
    66  func (v *Time) MustFromProto(proto *timestamppb.Timestamp) {
    67  	if proto == nil {
    68  		v.Value = time.Time{}
    69  		v.HasValue = false
    70  
    71  		return
    72  	}
    73  
    74  	v.HasValue = true
    75  	v.Value = proto.AsTime()
    76  }