-
Notifications
You must be signed in to change notification settings - Fork 0
/
sqlpb.go
81 lines (66 loc) · 1.79 KB
/
sqlpb.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package sqlpb_v1
import (
"database/sql"
"google.golang.org/protobuf/types/known/timestamppb"
"google.golang.org/protobuf/types/known/wrapperspb"
)
func FromNullType[V interface{}, T interface{}](valid bool, value V, parse func(V) *T) *T {
if valid {
return parse(value)
}
return nil
}
func FromNullBool(v sql.NullBool) *wrapperspb.BoolValue {
return FromNullType(v.Valid, v.Bool, wrapperspb.Bool)
}
func ToNullBool(v *wrapperspb.BoolValue) sql.NullBool {
return sql.NullBool{
Valid: v != nil,
Bool: v.GetValue(),
}
}
func FromNullFloat64(v sql.NullFloat64) *wrapperspb.DoubleValue {
return FromNullType(v.Valid, v.Float64, wrapperspb.Double)
}
func ToNullFloat64(v *wrapperspb.DoubleValue) sql.NullFloat64 {
return sql.NullFloat64{
Valid: v != nil,
Float64: v.GetValue(),
}
}
func FromNullInt32(v sql.NullInt32) *wrapperspb.Int32Value {
return FromNullType(v.Valid, v.Int32, wrapperspb.Int32)
}
func ToNullInt32(v *wrapperspb.Int32Value) sql.NullInt32 {
return sql.NullInt32{
Valid: v != nil,
Int32: v.GetValue(),
}
}
func FromNullInt64(v sql.NullInt64) *wrapperspb.Int64Value {
return FromNullType(v.Valid, v.Int64, wrapperspb.Int64)
}
func ToNullInt64(v *wrapperspb.Int64Value) sql.NullInt64 {
return sql.NullInt64{
Valid: v != nil,
Int64: v.GetValue(),
}
}
func FromNullString(v sql.NullString) *wrapperspb.StringValue {
return FromNullType(v.Valid, v.String, wrapperspb.String)
}
func ToNullString(v *wrapperspb.StringValue) sql.NullString {
return sql.NullString{
Valid: v != nil,
String: v.GetValue(),
}
}
func FromNullTime(v sql.NullTime) *timestamppb.Timestamp {
return FromNullType(v.Valid, v.Time, timestamppb.New)
}
func ToNullTime(v *timestamppb.Timestamp) sql.NullTime {
return sql.NullTime{
Valid: v != nil && v.IsValid(),
Time: v.AsTime(),
}
}