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 }