INNER CODE UNIT · Rust
generate_insert
stepancheg/rust-protobuf · protobuf-examples/issue-614/src/lib.rs:26
pub fn generate_insert(message: &dyn MessageDyn) -> String {
let descriptor = message.descriptor_dyn();
let table = table_name(&descriptor);
let mut column_names = Vec::new();
let mut column_values = Vec::new();
for field in descriptor.fields() {
if let Some(v) = field.get_singular(message) {
if let Some(oneof) = field.containing_oneof() {
column_names.push(format!("{}_type", oneof.name()));
column_values.push(format!("'{}'", field.name()));
column_names.push(format!("{}_value", oneof.name()));
column_values.push(format!("'{}'", v));
} else {
column_names.push(field.name().to_owned());
column_values.push(format!("'{}'", v));
}
}
}