Skip to content

woile/avdl-rs

Repository files navigation

AVDL-RS

Parse Avro AVDL files

CLI

To run avro-kit you can use

cargo run idl2schema

or build it

cargo build

TODO

  • Dockerfile
  • Fake content based on schema
  • nix package
  • cli tests with insta
  • benchmarks

Parsers

  • Enums
  • Alias
  • Namespace
  • Order
  • Annotations
    • This one is a bit more complicated, there can be 0..N unique annotations to be parsed, they can be before or after the type. See MultiAnnotations.avdl
  • Fixed length
    • TODO: default on record?
    • Why is it not possible to set an aliases on a fixed?
  • Records and errors
    • Record
    • RecordField
    • Error
  • RecordField
    • Named schema's aliases are for the schema's name which might be namespaced. Record field's aliases are for the field's name which is not namespaced. The field's type might be a (namespaced) reference to Schema.src
  • Protocol
  • Primitive types
    • string = &str
      • properly parse unicode strings
    • boolean = bool
    • int = i32
    • long = i64
    • float = f32
    • double = f64
    • null = ?
    • bytes = [u8]
  • Logical types
    • uuid -> valid uuid string
    • decimal (logical type decimal)
    • date (logical type date) -> int
    • time_ms (logical type time-millis) -> int
    • time-micros by @logicalType -> long
    • timestamp_ms (logical type timestamp-millis) -> long
    • timestamp-micros by @logicalType -> long
    • duration -> fixed type of size 12
      • TODO: Validations
      • TODO: Improve parsing of default
  • Complex types
    • Arrays
      • basic support
      • defaults?
      • array of array
    • Maps
    • Unions
  • Default values
    • Enum
  • Comments
    • doc (/** foo */)
    • comments
      • Move everything to use the field_parser
      • Write more tests for comments

Resources

Thanks

All the people that helped in nom's matrix server!