View Source Avrora.Schema.Encoder (avrora v0.29.1)
Encodes and parses Avro schemas from various formats, like JSON and erlavro into Avrora.Schema.
Summary
Functions
Convert erlavro format to the Schema struct.
Parse Avro schema JSON and convert to the Schema struct.
An example of a reference lookup which returns empty JSON body
Convert struct to erlavro format and look it up in avro_schema_store.
Types
Functions
@spec from_erlavro( term(), keyword() ) :: {:ok, Avrora.Schema.t()} | {:error, term()}
Convert erlavro format to the Schema struct.
Examples
iex> payload =
...> {:avro_record_type, "Payment", "io.acme", "", [],
...> [
...> {:avro_record_field, "id", "", {:avro_primitive_type, "string", []}, :undefined,
...> :ascending, []},
...> {:avro_record_field, "amount", "", {:avro_primitive_type, "double", []}, :undefined,
...> :ascending, []}
...> ], "io.acme.Payment", []}
iex> {:ok, schema} = Avrora.Schema.Encoder.from_erlavro(payload)
iex> schema.id
nil
iex> schema.full_name
"io.acme.Payment"
@spec from_json(String.t(), reference_lookup_fun()) :: {:ok, Avrora.Schema.t()} | {:error, term()}
Parse Avro schema JSON and convert to the Schema struct.
Examples
iex> json = ~s({"namespace":"io.acme","type":"record","name":"Payment","fields":[{"name":"id","type":"string"},{"name":"amount","type":"double"}]})
iex> {:ok, schema} = Avrora.Schema.Encoder.from_json(json)
iex> schema.full_name
"io.acme.Payment"
An example of a reference lookup which returns empty JSON body
@spec to_erlavro(Avrora.Schema.t()) :: {:ok, term()} | {:error, term()}
Convert struct to erlavro format and look it up in avro_schema_store.
Examples
iex> json = ~s({"namespace":"io.acme","type":"record","name":"Payment","fields":[{"name":"id","type":"string"},{"name":"amount","type":"double"}]})
iex> {:ok, schema} = Avrora.Schema.Encoder.from_json(json)
iex> {:ok, {type, _, _, _, _, _, full_name, _}} = Avrora.Schema.Encoder.to_erlavro(schema)
iex> full_name
"io.acme.Payment"
iex> type
:avro_record_type