explicit_trim/
explicit_trim.rs1use s2::{
2 client::{ClientConfig, StreamClient},
3 types::{AppendInput, AppendRecordBatch, BasinName, CommandRecord},
4};
5
6#[tokio::main]
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8 let token = std::env::var("S2_AUTH_TOKEN")?;
9 let config = ClientConfig::new(token);
10 let basin: BasinName = "my-favorite-basin".parse()?;
11 let stream = "my-favorite-stream";
12 let stream_client = StreamClient::new(config, basin, stream);
13
14 let tail = stream_client.check_tail().await?;
15 if tail == 0 {
16 println!("Empty stream");
17 return Ok(());
18 }
19
20 let latest_seq_num = tail - 1;
21 let trim_request = CommandRecord::trim(latest_seq_num);
22
23 let append_record_batch = AppendRecordBatch::try_from_iter([trim_request])
24 .expect("valid batch with 1 command record");
25 let append_input = AppendInput::new(append_record_batch);
26 let _ = stream_client.append(append_input).await?;
27
28 println!("Trim requested");
29
30 Ok(())
31}