fn identify_target()

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
}