[][src]Crate dynomite_derive

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

Examples

This example is not tested
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());
}

Derive Macros

Attribute

Derives dynomite::Attribute for enum types

Item

Derives dynomite::Item type for struts with named fields