Crate dynomite_derive[][src]

Dynomite-derive provides procedural macros for deriving dynamo types for your structs

examples

#[macro_use]
extern crate dynomite_derive;
extern crate dynomite;

use dynomite::{Item, FromAttributes, Attributes};
use dynomite::dynamodb::AttributeValue;

// derive Item
#[derive(Item, PartialEq, Debug, Clone)]
struct Person {
  #[hash] id: String
}

fn main() {
  let person = Person { id: "123".into() };
  // convert person to string keys and attribute values
  let attributes: Attributes = person.clone().into();
  // convert attributes into person type
  assert_eq!(person, Person::from_attrs(attributes).unwrap());

  // dynamodb types require only primary key attributes and may contain
  // other fields. when looking up items only those key attributes are required
  // dynomite derives a new {Name}Key struct for your which contains
  // only those and also implements Item
  let key = PersonKey { id: "123".into() };
  let key_attributes: Attributes = key.clone().into();
  // convert attributes into person type
  assert_eq!(key, PersonKey::from_attrs(key_attributes).unwrap());
}

Functions

derive_attr
derive_item