use crate::config::{Config, StateBackend};
use crate::cosmos::CosmosBackend;
pub async fn build_cosmos_backend(config: &Config) -> anyhow::Result<Box<dyn CosmosBackend>> {
match &config.state.backend {
StateBackend::Cosmos => {
let account = config.cosmos.account.as_deref().ok_or_else(|| {
anyhow::anyhow!("cosmos.account is required for state.backend=cosmos")
})?;
let endpoint = if account.starts_with("https://") {
account.to_owned()
} else {
format!("https://{account}.documents.azure.com:443/")
};
let client =
crate::cosmos::CosmosClient::new(&endpoint, &config.cosmos.database).await?;
Ok(Box::new(client))
}
StateBackend::LocalFile => {
anyhow::bail!("state.backend=local_file is not supported for this command; use cosmos")
}
}
}