Skip to content

Commit bcf2f81

Browse files
zepatrikory-bot
authored andcommitted
chore: replace deprecated usages
GitOrigin-RevId: 62521a582865a9d7799c624e9c2111ed68963ca1
1 parent 7afa2f9 commit bcf2f81

File tree

1 file changed

+54
-70
lines changed

1 file changed

+54
-70
lines changed

oryx/mapx/type_assert.go

Lines changed: 54 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package mapx
66
import (
77
"encoding/json"
88
"errors"
9-
"fmt"
109
"math"
1110
"time"
1211
)
@@ -30,22 +29,25 @@ func GetString[K comparable](values map[K]any, key K) (string, error) {
3029

3130
// GetStringSlice returns a string slice for a given key in values.
3231
func GetStringSlice[K comparable](values map[K]any, key K) ([]string, error) {
33-
if v, ok := values[key]; !ok {
34-
return []string{}, ErrKeyDoesNotExist
35-
} else if sv, ok := v.([]string); ok {
36-
return sv, nil
37-
} else if sv, ok := v.([]any); ok {
38-
vs := make([]string, len(sv))
39-
for k, v := range sv {
40-
vv, ok := v.(string)
32+
v, ok := values[key]
33+
if !ok {
34+
return nil, ErrKeyDoesNotExist
35+
}
36+
switch v := v.(type) {
37+
case []string:
38+
return v, nil
39+
case []any:
40+
vs := make([]string, len(v))
41+
for k, v := range v {
42+
var ok bool
43+
vs[k], ok = v.(string)
4144
if !ok {
42-
return []string{}, ErrKeyCanNotBeTypeAsserted
45+
return nil, ErrKeyCanNotBeTypeAsserted
4346
}
44-
vs[k] = vv
4547
}
4648
return vs, nil
4749
}
48-
return []string{}, ErrKeyCanNotBeTypeAsserted
50+
return nil, ErrKeyCanNotBeTypeAsserted
4951
}
5052

5153
// GetTime returns a string slice for a given key in values.
@@ -55,18 +57,25 @@ func GetTime[K comparable](values map[K]any, key K) (time.Time, error) {
5557
return time.Time{}, ErrKeyDoesNotExist
5658
}
5759

58-
if sv, ok := v.(time.Time); ok {
59-
return sv, nil
60-
} else if sv, ok := v.(int64); ok {
61-
return time.Unix(sv, 0), nil
62-
} else if sv, ok := v.(int32); ok {
63-
return time.Unix(int64(sv), 0), nil
64-
} else if sv, ok := v.(int); ok {
65-
return time.Unix(int64(sv), 0), nil
66-
} else if sv, ok := v.(float64); ok {
67-
return time.Unix(int64(sv), 0), nil
68-
} else if sv, ok := v.(float32); ok {
69-
return time.Unix(int64(sv), 0), nil
60+
switch v := v.(type) {
61+
case time.Time:
62+
return v, nil
63+
case int64:
64+
return time.Unix(v, 0), nil
65+
case int32:
66+
return time.Unix(int64(v), 0), nil
67+
case int:
68+
return time.Unix(int64(v), 0), nil
69+
case float64:
70+
if v < math.MinInt64 || v > math.MaxInt64 {
71+
return time.Time{}, errors.New("value is out of range")
72+
}
73+
return time.Unix(int64(v), 0), nil
74+
case float32:
75+
if v < math.MinInt64 || v > math.MaxInt64 {
76+
return time.Time{}, errors.New("value is out of range")
77+
}
78+
return time.Unix(int64(v), 0), nil
7079
}
7180

7281
return time.Time{}, ErrKeyCanNotBeTypeAsserted
@@ -166,13 +175,18 @@ func GetFloat32Default[K comparable](values map[K]any, key K, defaultValue float
166175

167176
// GetFloat32 returns a float32 for a given key in values.
168177
func GetFloat32[K comparable](values map[K]any, key K) (float32, error) {
169-
if v, ok := values[key]; !ok {
178+
v, ok := values[key]
179+
if !ok {
170180
return 0, ErrKeyDoesNotExist
171-
} else if j, ok := v.(json.Number); ok {
172-
v, err := j.Float64()
173-
return float32(v), err
174-
} else if sv, ok := v.(float32); ok {
175-
return sv, nil
181+
}
182+
switch v := v.(type) {
183+
case json.Number:
184+
f, err := v.Float64()
185+
return float32(f), err
186+
case float32:
187+
return v, nil
188+
case float64:
189+
return float32(v), nil
176190
}
177191
return 0, ErrKeyCanNotBeTypeAsserted
178192
}
@@ -188,12 +202,17 @@ func GetFloat64Default[K comparable](values map[K]any, key K, defaultValue float
188202

189203
// GetFloat64 returns a float64 for a given key in values.
190204
func GetFloat64[K comparable](values map[K]any, key K) (float64, error) {
191-
if v, ok := values[key]; !ok {
205+
v, ok := values[key]
206+
if !ok {
192207
return 0, ErrKeyDoesNotExist
193-
} else if j, ok := v.(json.Number); ok {
194-
return j.Float64()
195-
} else if sv, ok := v.(float64); ok {
196-
return sv, nil
208+
}
209+
switch v := v.(type) {
210+
case json.Number:
211+
return v.Float64()
212+
case float32:
213+
return float64(v), nil
214+
case float64:
215+
return v, nil
197216
}
198217
return 0, ErrKeyCanNotBeTypeAsserted
199218
}
@@ -213,38 +232,3 @@ func GetStringSliceDefault[K comparable](values map[K]any, key K, defaultValue [
213232
}
214233
return defaultValue
215234
}
216-
217-
// KeyStringToInterface converts map[string]any to map[any]any
218-
// Deprecated: with generics, this should not be necessary anymore.
219-
func KeyStringToInterface(i map[string]any) map[any]any {
220-
o := make(map[any]any)
221-
for k, v := range i {
222-
o[k] = v
223-
}
224-
return o
225-
}
226-
227-
// ToJSONMap converts all map[any]any occurrences (nested as well) to map[string]any.
228-
// Deprecated: with generics, this should not be necessary anymore.
229-
func ToJSONMap(i any) any {
230-
switch t := i.(type) {
231-
case []any:
232-
for k, v := range t {
233-
t[k] = ToJSONMap(v)
234-
}
235-
return t
236-
case map[string]any:
237-
for k, v := range t {
238-
t[k] = ToJSONMap(v)
239-
}
240-
return t
241-
case map[any]any:
242-
res := make(map[string]any)
243-
for k, v := range t {
244-
res[fmt.Sprintf("%s", k)] = ToJSONMap(v)
245-
}
246-
return res
247-
}
248-
249-
return i
250-
}

0 commit comments

Comments
 (0)