Struct mz_avro::schema::SchemaParser
source · struct SchemaParser {
named: Vec<Option<NamedSchemaPiece>>,
indices: BTreeMap<FullName, usize>,
}
Fields§
§named: Vec<Option<NamedSchemaPiece>>
§indices: BTreeMap<FullName, usize>
Implementations§
source§impl SchemaParser
impl SchemaParser
fn parse(self, value: &Value) -> Result<Schema, AvroError>
fn parse_inner( &mut self, default_namespace: &str, value: &Value ) -> Result<SchemaPieceOrNamed, AvroError>
fn alloc_name(&mut self, fullname: FullName) -> Result<usize, AvroError>
fn insert(&mut self, index: usize, schema: NamedSchemaPiece)
fn parse_named_type( &mut self, type_name: &str, default_namespace: &str, complex: &Map<String, Value> ) -> Result<usize, AvroError>
sourcefn parse_complex(
&mut self,
default_namespace: &str,
complex: &Map<String, Value>
) -> Result<SchemaPieceOrNamed, AvroError>
fn parse_complex( &mut self, default_namespace: &str, complex: &Map<String, Value> ) -> Result<SchemaPieceOrNamed, AvroError>
Parse a serde_json::Value
representing a complex Avro type into a
Schema
.
Avro supports “recursive” definition of types. e.g: {“type”: {“type”: “string”}}
sourcefn parse_record(
&mut self,
default_namespace: &str,
complex: &Map<String, Value>
) -> Result<SchemaPiece, AvroError>
fn parse_record( &mut self, default_namespace: &str, complex: &Map<String, Value> ) -> Result<SchemaPiece, AvroError>
Parse a serde_json::Value
representing a Avro record type into a
Schema
.
sourcefn parse_record_field(
&mut self,
default_namespace: &str,
field: &Map<String, Value>,
position: usize
) -> Result<RecordField, AvroError>
fn parse_record_field( &mut self, default_namespace: &str, field: &Map<String, Value>, position: usize ) -> Result<RecordField, AvroError>
Parse a serde_json::Value
into a RecordField
.
sourcefn parse_enum(
&mut self,
complex: &Map<String, Value>
) -> Result<SchemaPiece, AvroError>
fn parse_enum( &mut self, complex: &Map<String, Value> ) -> Result<SchemaPiece, AvroError>
Parse a serde_json::Value
representing a Avro enum type into a
Schema
.
sourcefn parse_array(
&mut self,
default_namespace: &str,
complex: &Map<String, Value>
) -> Result<SchemaPiece, AvroError>
fn parse_array( &mut self, default_namespace: &str, complex: &Map<String, Value> ) -> Result<SchemaPiece, AvroError>
Parse a serde_json::Value
representing a Avro array type into a
Schema
.
sourcefn parse_map(
&mut self,
default_namespace: &str,
complex: &Map<String, Value>
) -> Result<SchemaPiece, AvroError>
fn parse_map( &mut self, default_namespace: &str, complex: &Map<String, Value> ) -> Result<SchemaPiece, AvroError>
Parse a serde_json::Value
representing a Avro map type into a
Schema
.
sourcefn parse_union(
&mut self,
default_namespace: &str,
items: &[Value]
) -> Result<SchemaPiece, AvroError>
fn parse_union( &mut self, default_namespace: &str, items: &[Value] ) -> Result<SchemaPiece, AvroError>
Parse a serde_json::Value
representing a Avro union type into a
Schema
.
sourcefn parse_decimal(
complex: &Map<String, Value>
) -> Result<(usize, usize), AvroError>
fn parse_decimal( complex: &Map<String, Value> ) -> Result<(usize, usize), AvroError>
Parse a serde_json::Value
representing a logical decimal type into a
Schema
.
sourcefn parse_bytes(complex: &Map<String, Value>) -> Result<SchemaPiece, AvroError>
fn parse_bytes(complex: &Map<String, Value>) -> Result<SchemaPiece, AvroError>
Parse a serde_json::Value
representing an Avro bytes type into a
Schema
.
sourcefn parse_int(complex: &Map<String, Value>) -> Result<SchemaPiece, AvroError>
fn parse_int(complex: &Map<String, Value>) -> Result<SchemaPiece, AvroError>
Parse a serde_json::Value
representing an Avro Int type
If the complex type has a connect.name
tag (as emitted by
Debezium) that matches a Date
tag, we specify that the correct
schema to use is Date
.
sourcefn parse_long(complex: &Map<String, Value>) -> Result<SchemaPiece, AvroError>
fn parse_long(complex: &Map<String, Value>) -> Result<SchemaPiece, AvroError>
Parse a serde_json::Value
representing an Avro Int64/Long type
The debezium/kafka types are document at the debezium site, and the avro ones are documented at Avro.
fn from_string(complex: &Map<String, Value>) -> SchemaPiece
sourcefn parse_fixed(
&mut self,
_default_namespace: &str,
complex: &Map<String, Value>
) -> Result<SchemaPiece, AvroError>
fn parse_fixed( &mut self, _default_namespace: &str, complex: &Map<String, Value> ) -> Result<SchemaPiece, AvroError>
Parse a serde_json::Value
representing a Avro fixed type into a
Schema
.