in kafka-connect-bigtable-sink/doc/performance/terraform/main.rs [39:89]
fn struct_schema_and_value(
column_families: u64,
columns_per_family: u64,
field_value: String,
) -> (String, String) {
let columns: Vec<String> = (1..=columns_per_family)
.map(|i| format!("c{}", i))
.collect();
let column_families: Vec<String> = (1..=column_families).map(|i| format!("cf{}", i)).collect();
let column_family_schemas: Vec<String> = column_families
.iter()
.map(|cf| {
format!(
"{{\"type\":\"struct\",\"optional\":true,\"field\":\"{}\",\"fields\":[{}]}}",
cf,
columns
.iter()
.map(|c| format!(
"{{\"type\":\"string\",\"optional\":true,\"field\":\"{}\"}}",
c
))
.collect::<Vec<String>>()
.join(",")
)
})
.collect();
let schema: String = format!(
"{{\"name\":\"record\",\"type\":\"struct\",\"optional\":true,\"fields\":[{}]}}",
column_family_schemas.join(",")
);
let value: String = format!(
"{{{}}}",
column_families
.iter()
.map(|cf| {
format!(
"\"{}\":{{{}}}",
cf,
columns
.iter()
.map(|c| format!("\"{}\":\"{}\"", c, field_value))
.collect::<Vec<String>>()
.join(",")
)
})
.collect::<Vec<String>>()
.join(",")
);
(schema, value)
}