get_latest_record/
get_latest_record.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use s2::{
    client::{ClientConfig, StreamClient},
    types::{BasinName, ReadLimit, ReadRequest},
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let token = std::env::var("S2_AUTH_TOKEN")?;
    let config = ClientConfig::new(token);
    let basin: BasinName = "my-favorite-basin".parse()?;
    let stream = "my-favorite-stream";
    let stream_client = StreamClient::new(config, basin, stream);

    let tail = stream_client.check_tail().await?;
    if tail == 0 {
        println!("Empty stream");
        return Ok(());
    }

    let latest_seq_num = tail - 1;

    let read_limit = ReadLimit {
        count: Some(1),
        bytes: None,
    };
    let read_request = ReadRequest::new(latest_seq_num).with_limit(read_limit);
    let latest_record = stream_client.read(read_request).await?;

    println!("{latest_record:#?}");

    Ok(())
}