avrora v0.11.0 Avrora.Schema View Source

Convenience wrapper struct for AvroEx.Schema and Confluent Schema Registry.

Link to this section Summary

Functions

An example of a reference lookup which returns empty JSON body

Convert struct to erlavro format and look up in avro_schema_store.

Link to this section Types

Link to this type

reference_lookup_fun()

View Source
reference_lookup_fun() :: (String.t() -> {:ok, String.t()} | {:error, term()})
Link to this type

t()

View Source
t() :: %Avrora.Schema{
  full_name: String.t(),
  id: nil | integer(),
  json: String.t(),
  lookup_table: reference(),
  version: nil | integer()
}

Link to this section Functions

Link to this function

parse(payload, reference_lookup_fun \\ &Avrora.Schema.reference_lookup/1)

View Source
parse(String.t(), reference_lookup_fun()) :: {:ok, t()} | {:error, term()}

Parse Avro schema JSON and convert to struct.

Examples

iex> json = ~s({"namespace":"io.confluent","type":"record","name":"Payment","fields":[{"name":"id","type":"string"},{"name":"amount","type":"double"}]})
iex> {:ok, schema} = Avrora.Schema.parse(json)
iex> schema.full_name
"io.confluent.Payment"
Link to this function

reference_lookup(_)

View Source
reference_lookup(String.t()) :: {:ok, String.t()} | {:error, term()}

An example of a reference lookup which returns empty JSON body

Link to this function

to_erlavro(schema)

View Source
to_erlavro(t()) :: {:ok, term()} | {:error, term()}

Convert struct to erlavro format and look up in avro_schema_store.

Examples

iex> json = ~s({"namespace":"io.confluent","type":"record","name":"Payment","fields":[{"name":"id","type":"string"},{"name":"amount","type":"double"}]})
iex> {:ok, schema} = Avrora.Schema.parse(json)
iex> {:ok, {type, _, _, _, _, _, full_name, _}} = Avrora.Schema.to_erlavro(schema)
iex> full_name
"io.confluent.Payment"
iex> type
:avro_record_type