- Modify Avro decoder to preserve union type information by storing unions as records
- Update union detection logic in encoding to properly reconstruct Avro union format
- Fix test verification logic to handle new union storage format
- Re-enable previously skipped Avro union tests in decode_encode_test.go and integration_test.go
- All Avro union round-trip tests now pass
This fixes the core issue where Avro unions like {'int': 42} were being converted
to simple scalar values and losing the union type information needed for re-encoding.
The fix stores unions as RecordValue with the union type as the field name,
preserving the information needed for proper round-trip encoding.
- Add goavro dependency for Avro schema parsing and decoding
- Implement AvroDecoder with binary data decoding to Go maps
- Add MapToRecordValue() to convert Go values to schema_pb.RecordValue
- Support complex types: records, arrays, unions, primitives
- Add type inference from decoded maps to generate RecordType schemas
- Handle Avro union types and null values correctly
- Comprehensive test coverage including integration tests
This enables conversion of Avro messages to SeaweedMQ format.