summaryrefslogtreecommitdiff
path: root/vendor/github.com/hamba/avro/v2/schema_walk.go
blob: 253740cc7aac3f4d6e19bdea8217596a2919fbc5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package avro

func walkSchema(schema Schema, fn func(Schema) Schema) Schema {
	schema = fn(schema)

	switch s := schema.(type) {
	case *RecordSchema:
		for _, f := range s.Fields() {
			f.typ = walkSchema(f.typ, fn)
		}
	case *ArraySchema:
		s.items = walkSchema(s.items, fn)
	case *MapSchema:
		s.values = walkSchema(s.values, fn)
	case *UnionSchema:
		for i, st := range s.types {
			s.types[i] = walkSchema(st, fn)
		}
	}
	return schema
}