Skip to content

Commit 849a131

Browse files
committed
[refactor] Split Mapper.mapStruct into 2 methods
Because it's too complex.
1 parent 91c6df1 commit 849a131

File tree

1 file changed

+27
-17
lines changed

1 file changed

+27
-17
lines changed

mapify.go

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -91,30 +91,40 @@ func (i Mapper) mapStruct(path string, reflectValue reflect.Value) (map[string]i
9191
value := reflectValue.Field(j)
9292
element := Element{name: fieldName, Value: value}
9393

94-
accepted, err := i.Filter(fieldPath, element)
95-
if err != nil {
96-
return nil, fmt.Errorf("Filter failed: %w", err)
94+
if err := i.mapStructField(fieldPath, element, result); err != nil {
95+
return nil, err
9796
}
97+
}
9898

99-
if accepted {
100-
renamed, err := i.Rename(fieldPath, element)
101-
if err != nil {
102-
return nil, fmt.Errorf("Rename failed: %w", err)
103-
}
99+
return result, nil
100+
}
104101

105-
mappedValue, err := i.MapValue(fieldPath, element)
106-
if err != nil {
107-
return nil, fmt.Errorf("MapValue failed: %w", err)
108-
}
102+
func (i Mapper) mapStructField(fieldPath string, element Element, result map[string]interface{}) error {
103+
accepted, filterErr := i.Filter(fieldPath, element)
104+
if filterErr != nil {
105+
return fmt.Errorf("Filter failed: %w", filterErr)
106+
}
109107

110-
result[renamed], err = i.mapAny(fieldPath, mappedValue)
111-
if err != nil {
112-
return nil, err
113-
}
108+
if accepted {
109+
renamed, renameErr := i.Rename(fieldPath, element)
110+
if renameErr != nil {
111+
return fmt.Errorf("Rename failed: %w", renameErr)
114112
}
113+
114+
mappedValue, mapErr := i.MapValue(fieldPath, element)
115+
if mapErr != nil {
116+
return fmt.Errorf("MapValue failed: %w", mapErr)
117+
}
118+
119+
finalValue, err := i.mapAny(fieldPath, mappedValue)
120+
if err != nil {
121+
return err
122+
}
123+
124+
result[renamed] = finalValue
115125
}
116126

117-
return result, nil
127+
return nil
118128
}
119129

120130
func (i Mapper) mapSlice(path string, reflectValue reflect.Value) (_ interface{}, err error) {

0 commit comments

Comments
 (0)