pub struct Key<TD: TableDefinition>(/* private fields */);Expand description
A type-safe wrapper for a DynamoDB key belonging to a specific table.
Key<TD> holds only the key attributes (PK, and SK for composite-key tables)
for the table defined by the TableDefinition TD.
A Key can only be obtain from a type implementing KeyBuilder —
typically any DynamoDBItem — or by extracting it from an Item.
§Examples
Building a key from a KeyBuilder:
use dynamodb_facade::{DynamoDBItem, Key, KeyBuilder};
fn platform_key<KB: KeyBuilder<PlatformTable>>(key_builder: &KB) -> Key<PlatformTable> {
key_builder.get_key()
}
// User implements KeyBuilder<PlatformTable> because it is a DynamoDBItem<PlatformTable>
let user = sample_user();
let key = platform_key(&user);
let raw = key.into_inner();
assert_eq!(
raw["PK"].as_s().unwrap(),
"USER#user-1"
);Extracting a key from an item:
use dynamodb_facade::DynamoDBItem;
let item = sample_user().to_item();
let key = item.into_key_only();
let raw = key.into_inner();
assert!(raw.contains_key("PK"));
assert!(raw.contains_key("SK"));
assert!(!raw.contains_key("name")); // payload strippedImplementations§
Source§impl<TD: TableDefinition> Key<TD>
impl<TD: TableDefinition> Key<TD>
Sourcepub fn into_inner(self) -> HashMap<String, AttributeValue>
pub fn into_inner(self) -> HashMap<String, AttributeValue>
Consumes the key and returns the underlying raw attribute map.
The map contains only the key attributes (PK and SK for composite-key tables). Use this when you need to pass the key to raw SDK builders.
§Examples
use dynamodb_facade::{DynamoDBItem, Key, KeyBuilder};
let key: Key<PlatformTable> = sample_user().get_key();
let raw = key.into_inner();
assert_eq!(raw["PK"].as_s().unwrap(), "USER#user-1");
assert_eq!(raw["SK"].as_s().unwrap(), "USER");Trait Implementations§
Source§impl<TD: TableDefinition> Debug for Key<TD>
impl<TD: TableDefinition> Debug for Key<TD>
Auto Trait Implementations§
impl<TD> Freeze for Key<TD>
impl<TD> RefUnwindSafe for Key<TD>where
TD: RefUnwindSafe,
impl<TD> Send for Key<TD>where
TD: Send,
impl<TD> Sync for Key<TD>where
TD: Sync,
impl<TD> Unpin for Key<TD>where
TD: Unpin,
impl<TD> UnsafeUnpin for Key<TD>
impl<TD> UnwindSafe for Key<TD>where
TD: UnwindSafe,
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
Mutably borrows from an owned value. Read more
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreCreates a shared type from an unshared type.