create_basin/
create_basin.rs

1use std::time::Duration;
2
3use s2::{
4    client::{Client, ClientConfig},
5    types::{BasinConfig, BasinName, CreateBasinRequest, RetentionPolicy, StreamConfig},
6};
7
8#[tokio::main]
9async fn main() -> Result<(), Box<dyn std::error::Error>> {
10    let token = std::env::var("S2_ACCESS_TOKEN")?;
11    let config = ClientConfig::new(token);
12    let client = Client::new(config);
13
14    let basin: BasinName = "my-favorite-basin".parse()?;
15
16    let default_stream_config = StreamConfig::new().with_retention_policy(RetentionPolicy::Age(
17        // Set the default retention age to 10 days.
18        Duration::from_secs(10 * 24 * 60 * 60),
19    ));
20
21    let basin_config = BasinConfig {
22        default_stream_config: Some(default_stream_config),
23        create_stream_on_append: false,
24        create_stream_on_read: false,
25    };
26
27    let create_basin_request = CreateBasinRequest::new(basin.clone()).with_config(basin_config);
28
29    let created_basin = client.create_basin(create_basin_request).await?;
30    println!("{created_basin:#?}");
31
32    let basin_config = client.get_basin_config(basin).await?;
33    println!("{basin_config:#?}");
34
35    Ok(())
36}