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
.
Trait Implementations§
source§impl Default for SchemaParser
impl Default for SchemaParser
source§fn default() -> SchemaParser
fn default() -> SchemaParser
Auto Trait Implementations§
impl Freeze for SchemaParser
impl RefUnwindSafe for SchemaParser
impl Send for SchemaParser
impl Sync for SchemaParser
impl Unpin for SchemaParser
impl UnwindSafe for SchemaParser
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> FutureExt for T
impl<T> FutureExt for T
source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request