fn extract_secondary_indexes()

in src/control.rs [827:852]


fn extract_secondary_indexes<T: IndexDesc>(
    mode: &Mode,
    attr_defs: &[AttributeDefinition],
    option_indexes: Option<Vec<T>>,
) -> Option<Vec<PrintSecondaryIndex>> {
    if let Some(indexes) = option_indexes {
        let mut xs = Vec::<PrintSecondaryIndex>::new();
        for idx in &indexes {
            let ks = &idx.retrieve_key_schema().as_ref().unwrap();
            let idx = PrintSecondaryIndex {
                name: String::from(idx.retrieve_index_name().as_ref().unwrap()),
                schema: PrintPrimaryKeys {
                    pk: app::typed_key_for_schema("HASH", ks, attr_defs)
                        .expect("pk should exist")
                        .display(),
                    sk: app::typed_key_for_schema("RANGE", ks, attr_defs).map(|k| k.display()),
                },
                capacity: idx.extract_index_capacity(mode),
            };
            xs.push(idx);
        }
        Some(xs)
    } else {
        None
    }
}