mod common;
use scopedb_client::AppendState;
use scopedb_client::ErrorKind;
#[tokio::main(flavor = "current_thread")]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = common::client()?;
let table = common::write_table(&client)?;
let ndjson = [
serde_json::json!({
"id": 1,
"occurred_at": jiff::Timestamp::now(),
"name": "first",
}),
serde_json::json!({
"id": 2,
"occurred_at": jiff::Timestamp::now(),
"name": "second",
}),
]
.iter()
.map(serde_json::to_string)
.collect::<Result<Vec<_>, _>>()?
.join("\n");
match table.append(ndjson).await {
Ok(result) => {
println!("committed remotely: {} rows", result.num_rows_inserted);
Ok(())
}
Err(error) => {
if error.kind() == ErrorKind::AppendRowsFailed
&& matches!(
error.append_details().map(|details| details.append_state),
Some(AppendState::Unknown)
)
{
eprintln!("commit outcome is unknown; reconcile before replaying this payload");
}
Err(error.into())
}
}
}