github.com/ydb-platform/ydb-go-sdk/v3@v3.89.2/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  func (v *Duration) MustFromProto(proto *durationpb.Duration) {
    39  	if proto == nil {
    40  		v.Value = time.Duration(0)
    41  		v.HasValue = false
    42  
    43  		return
    44  	}
    45  
    46  	v.HasValue = true
    47  	v.Value = proto.AsDuration()
    48  }
    49  
    50  func (v *Duration) ToDuration() *time.Duration {
    51  	if v.HasValue {
    52  		return nil
    53  	}
    54  
    55  	return &v.Value
    56  }
    57  
    58  type Int64 struct {
    59  	Value    int64
    60  	HasValue bool
    61  }
    62  
    63  func (v *Int64) ToProto() *int64 {
    64  	if !v.HasValue {
    65  		return nil
    66  	}
    67  
    68  	val := v.Value
    69  
    70  	return &val
    71  }
    72  
    73  type Time struct {
    74  	Value    time.Time
    75  	HasValue bool
    76  }
    77  
    78  func (v *Time) ToProto() *timestamppb.Timestamp {
    79  	if v.HasValue {
    80  		return timestamppb.New(v.Value)
    81  	}
    82  
    83  	return nil
    84  }
    85  
    86  func (v *Time) MustFromProto(proto *timestamppb.Timestamp) {
    87  	if proto == nil {
    88  		v.Value = time.Time{}
    89  		v.HasValue = false
    90  
    91  		return
    92  	}
    93  
    94  	v.HasValue = true
    95  	v.Value = proto.AsTime()
    96  }
    97  
    98  func (v *Time) ToTime() *time.Time {
    99  	if v.HasValue {
   100  		return nil
   101  	}
   102  
   103  	return &v.Value
   104  }