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 }