File tree 8 files changed +72
-21
lines changed
8 files changed +72
-21
lines changed Original file line number Diff line number Diff line change @@ -21,17 +21,24 @@ type TfBoolValue struct {
21
21
var _ basetypes.BoolValuable = TfBoolValue {}
22
22
23
23
func (t * TfBoolValue ) UnmarshalJSON (data []byte ) error {
24
- var v bool
24
+ var v * bool
25
25
if err := json .Unmarshal (data , & v ); err != nil {
26
26
return err
27
27
}
28
28
29
- t .BoolValue = basetypes .NewBoolValue (v )
29
+ if v == nil {
30
+ t .BoolValue = basetypes .NewBoolNull ()
31
+ } else {
32
+ t .BoolValue = basetypes .NewBoolValue (* v )
33
+ }
30
34
31
35
return nil
32
36
}
33
37
34
38
func (t TfBoolValue ) MarshalJSON () ([]byte , error ) {
39
+ if t .IsNull () || t .IsUnknown () {
40
+ return []byte ("null" ), nil
41
+ }
35
42
return json .Marshal (t .BoolValue .ValueBool ())
36
43
}
37
44
Original file line number Diff line number Diff line change @@ -72,17 +72,24 @@ type TfInt64Value struct {
72
72
var _ basetypes.Int64Valuable = TfInt64Value {}
73
73
74
74
func (t * TfInt64Value ) UnmarshalJSON (data []byte ) error {
75
- var v int64
75
+ var v * int64
76
76
if err := json .Unmarshal (data , & v ); err != nil {
77
77
return err
78
78
}
79
79
80
- t .Int64Value = basetypes .NewInt64Value (v )
80
+ if v == nil {
81
+ t .Int64Value = basetypes .NewInt64Null ()
82
+ } else {
83
+ t .Int64Value = basetypes .NewInt64Value (* v )
84
+ }
81
85
82
86
return nil
83
87
}
84
88
85
89
func (t TfInt64Value ) MarshalJSON () ([]byte , error ) {
90
+ if t .IsNull () || t .IsUnknown () {
91
+ return []byte ("null" ), nil
92
+ }
86
93
return json .Marshal (t .Int64Value .ValueInt64 ())
87
94
}
88
95
Original file line number Diff line number Diff line change @@ -136,19 +136,26 @@ func (t *TfListNestedValue[T]) UnmarshalJSON(data []byte) error {
136
136
return err
137
137
}
138
138
139
- for _ , c := range v {
140
- d = append (d , c )
141
- }
142
-
143
139
var zero T
144
- t .ListValue = basetypes .NewListValueMust (zero .Type (context .Background ()), d )
140
+
141
+ if v == nil {
142
+ t .ListValue = basetypes .NewListNull (zero .Type (context .Background ()))
143
+ } else {
144
+ for _ , c := range v {
145
+ d = append (d , c )
146
+ }
147
+ t .ListValue = basetypes .NewListValueMust (zero .Type (context .Background ()), d )
148
+ }
145
149
146
150
return nil
147
151
}
148
152
149
153
func (t TfListNestedValue [T ]) MarshalJSON () ([]byte , error ) {
150
- var toMarshal []T
154
+ if t .IsNull () || t .IsUnknown () {
155
+ return []byte ("null" ), nil
156
+ }
151
157
158
+ var toMarshal []T
152
159
for _ , elem := range t .Elements () {
153
160
toMarshal = append (toMarshal , elem .(T ))
154
161
}
Original file line number Diff line number Diff line change @@ -105,16 +105,32 @@ func (v *TfMapNestedValue[T]) UnmarshalJSON(data []byte) error {
105
105
return err
106
106
}
107
107
108
- for k , v := range mm {
109
- d [k ] = v
110
- }
111
-
112
108
var zero T
113
- v .MapValue = basetypes .NewMapValueMust (zero .Type (context .Background ()), d )
109
+ if mm == nil {
110
+ v .MapValue = basetypes .NewMapNull (zero .Type (context .Background ()))
111
+ } else {
112
+ for k , v := range mm {
113
+ d [k ] = v
114
+ }
115
+ v .MapValue = basetypes .NewMapValueMust (zero .Type (context .Background ()), d )
116
+ }
114
117
115
118
return nil
116
119
}
117
120
121
+ func (t TfMapNestedValue [T ]) MarshalJSON () ([]byte , error ) {
122
+ if t .IsNull () || t .IsUnknown () {
123
+ return []byte ("null" ), nil
124
+ }
125
+
126
+ toMarshal := make (map [string ]T )
127
+ for key , elem := range t .Elements () {
128
+ toMarshal [key ] = elem .(T )
129
+ }
130
+
131
+ return json .Marshal (toMarshal )
132
+ }
133
+
118
134
// ToTerraformValue returns the data contained in the Map as a tftypes.Value.
119
135
func (v TfMapNestedValue [T ]) ToTerraformValue (ctx context.Context ) (tftypes.Value , error ) {
120
136
Original file line number Diff line number Diff line change @@ -71,17 +71,25 @@ type TfNumberValue struct {
71
71
var _ basetypes.NumberValuable = TfNumberValue {}
72
72
73
73
func (t * TfNumberValue ) UnmarshalJSON (data []byte ) error {
74
- var v float64
74
+ var v * float64
75
75
if err := json .Unmarshal (data , & v ); err != nil {
76
76
return err
77
77
}
78
78
79
- t .NumberValue = basetypes .NewNumberValue (big .NewFloat (v ))
79
+ if v == nil {
80
+ t .NumberValue = basetypes .NewNumberNull ()
81
+ } else {
82
+ t .NumberValue = basetypes .NewNumberValue (big .NewFloat (* v ))
83
+ }
80
84
81
85
return nil
82
86
}
83
87
84
88
func (t TfNumberValue ) MarshalJSON () ([]byte , error ) {
89
+ if t .IsNull () || t .IsUnknown () {
90
+ return []byte ("null" ), nil
91
+ }
92
+
85
93
floatVal , _ := t .ValueBigFloat ().Float64 ()
86
94
return json .Marshal (floatVal )
87
95
}
Original file line number Diff line number Diff line change @@ -21,17 +21,24 @@ type TfStringValue struct {
21
21
var _ basetypes.StringValuable = TfStringValue {}
22
22
23
23
func (t * TfStringValue ) UnmarshalJSON (data []byte ) error {
24
- var v string
24
+ var v * string
25
25
if err := json .Unmarshal (data , & v ); err != nil {
26
26
return err
27
27
}
28
28
29
- t .StringValue = basetypes .NewStringValue (v )
29
+ if v == nil {
30
+ t .StringValue = basetypes .NewStringNull ()
31
+ } else {
32
+ t .StringValue = basetypes .NewStringValue (* v )
33
+ }
30
34
31
35
return nil
32
36
}
33
37
34
38
func (t TfStringValue ) MarshalJSON () ([]byte , error ) {
39
+ if t .IsNull () || t .IsUnknown () {
40
+ return []byte ("null" ), nil
41
+ }
35
42
return json .Marshal (t .StringValue .ValueString ())
36
43
}
37
44
You can’t perform that action at this time.
0 commit comments