in schema.go [572:616]
func visitField[T any](f NestedField, visitor SchemaVisitor[T]) T {
switch typ := f.Type.(type) {
case *StructType:
return visitStruct(*typ, visitor)
case *ListType:
return visitList(*typ, visitor)
case *MapType:
return visitMap(*typ, visitor)
default: // primitive
if perPrimitive, ok := visitor.(SchemaVisitorPerPrimitiveType[T]); ok {
switch t := typ.(type) {
case BooleanType:
return perPrimitive.VisitBoolean()
case Int32Type:
return perPrimitive.VisitInt32()
case Int64Type:
return perPrimitive.VisitInt64()
case Float32Type:
return perPrimitive.VisitFloat32()
case Float64Type:
return perPrimitive.VisitFloat64()
case DateType:
return perPrimitive.VisitDate()
case TimeType:
return perPrimitive.VisitTime()
case TimestampType:
return perPrimitive.VisitTimestamp()
case TimestampTzType:
return perPrimitive.VisitTimestampTz()
case StringType:
return perPrimitive.VisitString()
case BinaryType:
return perPrimitive.VisitBinary()
case UUIDType:
return perPrimitive.VisitUUID()
case DecimalType:
return perPrimitive.VisitDecimal(t)
case FixedType:
return perPrimitive.VisitFixed(t)
}
}
return visitor.Primitive(typ.(PrimitiveType))
}
}