fn set_batch_params()

in akd_mysql/src/mysql_storables.rs [139:205]


    fn set_batch_params(items: &[DbRecord]) -> Result<mysql_async::Params> {
        let param_batch = items
            .iter()
            .enumerate()
            .map(|(idx, item)| match &item {
                DbRecord::Azks(azks) => Ok(vec![
                    ("key".to_string(), Value::from(1u8)),
                    ("epoch".to_string(), Value::from(azks.latest_epoch)),
                    ("num_nodes".to_string(), Value::from(azks.num_nodes)),
                ]),
                DbRecord::HistoryNodeState(state) => {
                    if let Ok(bin_data) = bincode::serialize(&state.child_states) {
                        let id = state.get_id();
                        Ok(vec![
                            (format!("label_len{}", idx), Value::from(id.0.len)),
                            (format!("label_val{}", idx), Value::from(id.0.val)),
                            (format!("epoch{}", idx), Value::from(id.1)),
                            (format!("value{}", idx), Value::from(state.value)),
                            (format!("child_states{}", idx), Value::from(bin_data)),
                        ])
                    } else {
                        Err(MySqlError::Other("Failed to serialize child states".into()))
                    }
                }
                DbRecord::HistoryTreeNode(node) => Ok(vec![
                    (format!("label_len{}", idx), Value::from(node.label.len)),
                    (format!("label_val{}", idx), Value::from(node.label.val)),
                    (format!("birth_epoch{}", idx), Value::from(node.birth_epoch)),
                    (format!("last_epoch{}", idx), Value::from(node.last_epoch)),
                    (
                        format!("parent_label_len{}", idx),
                        Value::from(node.parent.len),
                    ),
                    (
                        format!("parent_label_val{}", idx),
                        Value::from(node.parent.val),
                    ),
                    (
                        format!("node_type{}", idx),
                        Value::from(node.node_type as u8),
                    ),
                ]),
                DbRecord::ValueState(state) => Ok(vec![
                    (format!("username{}", idx), Value::from(state.get_id().0)),
                    (format!("epoch{}", idx), Value::from(state.epoch)),
                    (format!("version{}", idx), Value::from(state.version)),
                    (
                        format!("node_label_len{}", idx),
                        Value::from(state.label.len),
                    ),
                    (
                        format!("node_label_val{}", idx),
                        Value::from(state.label.val),
                    ),
                    (
                        format!("data{}", idx),
                        Value::from(state.plaintext_val.0.clone()),
                    ),
                ]),
            })
            .into_iter()
            .collect::<Result<Vec<_>>>()?
            .into_iter()
            .flatten()
            .collect::<Vec<_>>();
        Ok(mysql_async::Params::from(param_batch))
    }