use anyhow::Result;
use redpanda_transform_sdk::*;
use serde::{Deserialize, Serialize};
fn main() {
on_record_written(my_transform);
}
#[derive(Serialize, Deserialize)]
struct Foo {
a: String,
b: i32,
}
fn my_transform(event: WriteEvent, writer: &mut RecordWriter) -> Result<()> {
let mut reader = csv::Reader::from_reader(event.record.value().unwrap_or_default());
for result in reader.deserialize() {
let foo: Foo = result?;
let value = serde_json::to_vec(&foo)?;
writer.write(BorrowedRecord::new(event.record.key(), Some(&value)))?;
}
Ok(())
}