reconfigure_basin/
reconfigure_basin.rs

1use s2::{
2    client::{Client, ClientConfig},
3    types::{BasinConfig, BasinName, ReconfigureBasinRequest, StorageClass, StreamConfig},
4};
5
6#[tokio::main]
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8    let token = std::env::var("S2_ACCESS_TOKEN")?;
9    let config = ClientConfig::new(token);
10    let client = Client::new(config);
11
12    let basin: BasinName = "my-favorite-basin".parse()?;
13
14    let default_stream_config_updates =
15        StreamConfig::new().with_storage_class(StorageClass::Standard);
16    let basin_config_updates = BasinConfig {
17        default_stream_config: Some(default_stream_config_updates),
18        create_stream_on_append: true,
19        create_stream_on_read: true,
20    };
21
22    let reconfigure_basin_request = ReconfigureBasinRequest::new(basin)
23        .with_config(basin_config_updates)
24        // Field mask specifies which fields to update.
25        .with_mask(vec!["default_stream_config.retention_policy".to_string()]);
26
27    let updated_basin_config = client.reconfigure_basin(reconfigure_basin_request).await?;
28
29    println!("{updated_basin_config:#?}");
30
31    Ok(())
32}