1 unstable release

0.1.0 Jan 24, 2021

#2107 in Procedural macros


Used in 2 crates

Apache-2.0

295KB
7K SLoC

OData Schema

Parse OData schemas into Rust types, with the goal of supporting Dynamics 365 OData operations.

Roadmap

https://en.wikipedia.org/wiki/Open_Data_Protocol#Architecture

  • Deserialise $metadata document
  • Construct coherent entity model
    • References/includes
    • Annotations/annotation groups (annotations currently not constructed for "completed" items either)
    • Types
    • Actions
    • Functions
    • Terms
    • Entity containers
      • Entity sets
      • Action imports
      • Function imports
      • Singletons
      • Extends
    • Customisation/handling of metadata inconsistencies
      • User-specified handling of qualified name/target path resolution errors
  • Code generation
    • Type definitions
    • Entity container definitions
    • Entity set definitions
    • Actions
    • Functions
    • Black/whitelist for generated types (with stubbed dependencies)
  • Client functionality
    • Retrieve
    • Filter/queries
    • Create/Update/Delete
    • Call actions & functions
    • ETag support
    • Retrieve/set open types
    • Batch requests
  • Consuming crate bindings
    • Proc macro
    • Proc macro attribute
    • build.rs code generation
  • What-if/dry-run

lib.rs:

Functionality to generate a rust source code module which represents Entity Data Model items for an OData endpoint. This generation can be performed as a procedural macro from the odata_client_derive crate, or as a build.rs action, using the write_module_build_artifact or generate_module functions.

Dependencies

~9–19MB
~288K SLoC