MCPcopy Create free account
hub / github.com/postgres-ai/database-lab-engine / forEachField

Function forEachField

engine/pkg/util/projection/operations.go:84–120  ·  view source on GitHub ↗
(target interface{}, fn func(tag *fieldTag, field reflect.Value) error)

Source from the content-addressed store, hash-verified

82}
83
84func forEachField(target interface{}, fn func(tag *fieldTag, field reflect.Value) error) error {
85 value := reflect.Indirect(
86 reflect.ValueOf(target),
87 )
88
89 if value.Kind() != reflect.Struct {
90 return errors.Errorf("target must be a struct")
91 }
92
93 if !value.CanAddr() {
94 return errors.Errorf("target must be addressable")
95 }
96
97 valueType := value.Type()
98 num := value.NumField()
99
100 for i := 0; i < num; i++ {
101 field := value.Field(i)
102 fieldType := valueType.Field(i)
103
104 tag, err := getFieldTag(fieldType)
105 if err != nil {
106 return err
107 }
108
109 if tag == nil {
110 continue
111 }
112
113 err = fn(tag, field)
114 if err != nil {
115 return err
116 }
117 }
118
119 return nil
120}

Callers 2

LoadFunction · 0.85
StoreFunction · 0.85

Calls 2

getFieldTagFunction · 0.85
fnFunction · 0.50

Tested by

no test coverage detected