Skip to content

Commit 9165281

Browse files
authored
fix(json): Panic when json is null (#25)
1 parent 898e7bb commit 9165281

1 file changed

Lines changed: 51 additions & 0 deletions

File tree

json/transformer.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,37 @@ func (t *ReverseTransformer) ReverseTransformValues(table *schema.Table, values
1818
type Transformer struct{}
1919

2020
func (*Transformer) TransformBool(v *schema.Bool) any {
21+
if v.Status != schema.Present {
22+
return nil
23+
}
2124
return v.Bool
2225
}
2326

2427
func (*Transformer) TransformBytea(v *schema.Bytea) any {
28+
if v.Status != schema.Present {
29+
return nil
30+
}
2531
return v.String()
2632
}
2733

2834
func (*Transformer) TransformFloat8(v *schema.Float8) any {
35+
if v.Status != schema.Present {
36+
return nil
37+
}
2938
return v.Float
3039
}
3140

3241
func (*Transformer) TransformInt8(v *schema.Int8) any {
42+
if v.Status != schema.Present {
43+
return nil
44+
}
3345
return v.Int
3446
}
3547

3648
func (*Transformer) TransformInt8Array(v *schema.Int8Array) any {
49+
if v.Status != schema.Present {
50+
return nil
51+
}
3752
res := make([]int64, len(v.Elements))
3853
for i, e := range v.Elements {
3954
res[i] = e.Int
@@ -42,6 +57,9 @@ func (*Transformer) TransformInt8Array(v *schema.Int8Array) any {
4257
}
4358

4459
func (*Transformer) TransformJSON(v *schema.JSON) any {
60+
if v.Status != schema.Present {
61+
return nil
62+
}
4563
var res any
4664
if err := json.Unmarshal(v.Bytes, &res); err != nil {
4765
panic(err)
@@ -50,10 +68,16 @@ func (*Transformer) TransformJSON(v *schema.JSON) any {
5068
}
5169

5270
func (*Transformer) TransformText(v *schema.Text) any {
71+
if v.Status != schema.Present {
72+
return nil
73+
}
5374
return v.Str
5475
}
5576

5677
func (*Transformer) TransformTextArray(v *schema.TextArray) any {
78+
if v.Status != schema.Present {
79+
return nil
80+
}
5781
res := make([]string, len(v.Elements))
5882
for i, e := range v.Elements {
5983
res[i] = e.Str
@@ -62,14 +86,23 @@ func (*Transformer) TransformTextArray(v *schema.TextArray) any {
6286
}
6387

6488
func (*Transformer) TransformTimestamptz(v *schema.Timestamptz) any {
89+
if v.Status != schema.Present {
90+
return nil
91+
}
6592
return v.String()
6693
}
6794

6895
func (*Transformer) TransformUUID(v *schema.UUID) any {
96+
if v.Status != schema.Present {
97+
return nil
98+
}
6999
return v.String()
70100
}
71101

72102
func (*Transformer) TransformUUIDArray(v *schema.UUIDArray) any {
103+
if v.Status != schema.Present {
104+
return nil
105+
}
73106
res := make([]string, len(v.Elements))
74107
for i, e := range v.Elements {
75108
res[i] = e.String()
@@ -78,10 +111,16 @@ func (*Transformer) TransformUUIDArray(v *schema.UUIDArray) any {
78111
}
79112

80113
func (*Transformer) TransformCIDR(v *schema.CIDR) any {
114+
if v.Status != schema.Present {
115+
return nil
116+
}
81117
return v.String()
82118
}
83119

84120
func (*Transformer) TransformCIDRArray(v *schema.CIDRArray) any {
121+
if v.Status != schema.Present {
122+
return nil
123+
}
85124
res := make([]string, len(v.Elements))
86125
for i, e := range v.Elements {
87126
res[i] = e.String()
@@ -90,10 +129,16 @@ func (*Transformer) TransformCIDRArray(v *schema.CIDRArray) any {
90129
}
91130

92131
func (*Transformer) TransformInet(v *schema.Inet) any {
132+
if v.Status != schema.Present {
133+
return nil
134+
}
93135
return v.String()
94136
}
95137

96138
func (*Transformer) TransformInetArray(v *schema.InetArray) any {
139+
if v.Status != schema.Present {
140+
return nil
141+
}
97142
res := make([]string, len(v.Elements))
98143
for i, e := range v.Elements {
99144
res[i] = e.String()
@@ -102,10 +147,16 @@ func (*Transformer) TransformInetArray(v *schema.InetArray) any {
102147
}
103148

104149
func (*Transformer) TransformMacaddr(v *schema.Macaddr) any {
150+
if v.Status != schema.Present {
151+
return nil
152+
}
105153
return v.String()
106154
}
107155

108156
func (*Transformer) TransformMacaddrArray(v *schema.MacaddrArray) any {
157+
if v.Status != schema.Present {
158+
return nil
159+
}
109160
res := make([]string, len(v.Elements))
110161
for i, e := range v.Elements {
111162
res[i] = e.String()

0 commit comments

Comments
 (0)