I need to put a record into a array as an optional item.
It seems the optional key must be presented in this case.
Is this an expected behavior?
Elixir 1.8
OTP 22
:avro_ex 2.1
Schema
profile_schema = %{
"type" => "record",
"name" => "profile",
"fields" => [
%{"name" => "name", "type" => "string"},
%{"name" => "age", "type" => ["null", "int"]},
]
}
array_schmea = %{
"type" => "array",
"items" => [
"null",
"string",
profile_schema
]
}
final_schema = AvroEx.decode_schema!(array_schmea, strict: true)
Usage
NG
profile = %{
name: "Alice"
}
example = ["1","2", profile]
example_bin = AvroEx.encode!(final_schema, example) |> IO.inspect(label: "encode")
AvroEx.decode!(final_schema, example_bin) |> IO.inspect(label: "decode")
** (AvroEx.EncodeError) Schema Mismatch: Expected value of Union<possibilities=null|string|Record<name=profile>>, got %{name: "Alice"}
(avro_ex 2.1.0) lib/avro_ex.ex:163: AvroEx.encode!/3
#cell:k6mfb4za2ebwu6sux5ix32zdwrvnacar:27: (file)
OK
profile = %{
name: "Alice",
age: nil
}
example = ["1","2", profile]
example_bin = AvroEx.encode!(final_schema, example) |> IO.inspect(label: "encode")
AvroEx.decode!(final_schema, example_bin) |> IO.inspect(label: "decode")
I need to put a record into a array as an optional item.
It seems the optional key must be presented in this case.
Is this an expected behavior?
Elixir 1.8
OTP 22
:avro_ex 2.1
Schema
Usage
NG
OK