Module avro_map

Handling of Avro maps.

Authors: Ilya Staheev (ilya.staheev@klarna.com).

Description

Handling of Avro maps. Data are kept internally as a #{binary() -> avro_value()}

Data Types

array_type()

array_type() = #avro_array_type{type = avro:type_or_name(), custom = [avro:custom_prop()]}

avro_type()

avro_type() = primitive_type() | array_type() | enum_type() | fixed_type() | map_type() | record_type() | union_type()

avro_value()

avro_value() = avro:canonicalized_value() | #avro_value{type = avro:type_or_name(), data = avro:avro_value()} | [#avro_value{type = avro:type_or_name(), data = avro:avro_value()}] | [{avro:name(), #avro_value{type = avro:type_or_name(), data = avro:avro_value()}}] | avro_map:data() | {json, binary()} | {binary, binary()}

custom_prop()

custom_prop() = {custom_prop_name(), custom_prop_value()}

custom_prop_name()

custom_prop_name() = binary()

custom_prop_value()

custom_prop_value() = jsone:json_value()

data()

data() = #{key() => value()}

enum_type()

enum_type() = #avro_enum_type{name = avro:name(), namespace = avro:namespace(), aliases = [avro:name()], doc = avro:typedoc(), symbols = [avro:enum_symbol()], fullname = avro:fullname(), custom = [avro:custom_prop()]}

fixed_type()

fixed_type() = #avro_fixed_type{name = avro:name(), namespace = avro:namespace(), aliases = [avro:name()], size = pos_integer(), fullname = avro:fullname(), custom = [avro:custom_prop()]}

input_data()

input_data() = [{input_key(), input_value()}] | #{input_key() => input_value()}

input_key()

input_key() = avro:name_raw()

input_value()

input_value() = avro:in()

key()

key() = binary()

map_type()

map_type() = #avro_map_type{type = avro:type_or_name(), custom = [avro:custom_prop()]}

name_raw()

name_raw() = atom() | string() | binary()

namespace()

namespace() = binary()

primitive_type()

primitive_type() = #avro_primitive_type{name = avro:name(), custom = [avro:custom_prop()]}

record_type()

record_type() = #avro_record_type{name = avro:name(), namespace = avro:namespace(), doc = avro:typedoc(), aliases = [avro:name()], fields = [avro:record_field()], fullname = avro:fullname(), custom = [avro:custom_prop()]}

type_or_name()

type_or_name() = avro_type() | name_raw()

union_type()

union_type() = #avro_union_type{id2type = avro_union:id2type(), name2id = avro_union:name2id()}

value()

value() = avro_value()

Function Index

get_items_type/1Return the map-value's type definition.
new/2Create a new typed (boxed) value.
resolve_fullname/2Resolve fullname by newly discovered enclosing namespace.
to_term/1Recursively unbox the wrapped avro_value().
type/1Define a map type.
type/2Define a map type with given custom properties.
update_items_type/2Evaluate callback to update itmes type.

Function Details

get_items_type/1

get_items_type(Avro_map_type::map_type()) -> avro_type()

Return the map-value's type definition.

new/2

new(Type::map_type(), Data::input_data()) -> avro_value() | no_return()

Create a new typed (boxed) value. Raise an 'error' in case of failure.

resolve_fullname/2

resolve_fullname(Map::map_type(), Ns::namespace()) -> map_type()

Resolve fullname by newly discovered enclosing namespace.

to_term/1

to_term(Map::avro_value()) -> [{key(), value()}]

Recursively unbox the wrapped avro_value().

type/1

type(Type::avro_type()) -> map_type()

Define a map type.

type/2

type(Type::avro_type(), CustomProps::[custom_prop()]) -> map_type()

Define a map type with given custom properties.

update_items_type/2

update_items_type(Avro_map_type::map_type(), F::fun((type_or_name()) -> type_or_name())) -> map_type()

Evaluate callback to update itmes type.


Generated by EDoc