in src/data.rs [637:666]
fn identify_target(
ts: &app::TableSchema,
pval: String,
optional_sval: Option<String>,
) -> HashMap<String, AttributeValue> {
let mut target = HashMap::<String, AttributeValue>::new();
target.insert(
ts.pk.name.to_string(),
build_attrval_scalar(&ts.pk.kind.to_string(), &pval),
);
// if sort key value is given from command line, add sort key to target HashMap to identify an item.
if let Some(sval) = optional_sval {
match ts.sk.as_ref() {
Some(sk) => target.insert(
sk.name.to_string(),
build_attrval_scalar(&sk.kind.to_string(), &sval),
),
None => {
error!("Partition and Sort keys are given to identify an item, but table '{t}' uses Partition key only. Check `dy desc {t}`", t = &ts.name);
std::process::exit(1);
}
};
}
debug!(
"Generated primary key(s) to identify an item: {:?}",
&target
);
target
}