use std::sync::Arc;
use acta::{Array, PrimitiveArray, RecordBatch, Writer, WriterOptions};
fn main() -> acta::Result<()> {
let mut arguments = std::env::args().skip(1);
let Some(path) = arguments.next() else {
eprintln!("usage: acta_append <path> <rows> [first-value]");
std::process::exit(2);
};
let rows: usize = arguments
.next()
.expect("usage: acta_append <path> <rows> [first-value]")
.parse()
.expect("rows must be a count");
let first_value: i64 = arguments
.next()
.map(|value| value.parse().expect("first-value must be an integer"))
.unwrap_or(0);
let mut writer = Writer::open(path, WriterOptions::default())?;
let schema = Arc::clone(writer.schema());
let batch = RecordBatch::try_new(
schema,
vec![Array::Int64(PrimitiveArray::new(
(0..rows).map(|row| first_value + row as i64).collect(),
None,
))],
rows,
)?;
writer.append(batch)?;
let _summary = writer.finish()?;
Ok(())
}