use std::sync::Arc;
use fluvio::{Fluvio, FluvioClusterConfig};
use photon_backend::{PhotonError, Result};
use crate::config::FluvioConfig;
pub type SharedClient = Arc<Fluvio>;
pub async fn connect_fluvio(config: &FluvioConfig) -> Result<SharedClient> {
validate_endpoint(&config.endpoint)?;
let cluster_config = FluvioClusterConfig::new(config.endpoint.clone());
let client = Fluvio::connect_with_config(&cluster_config)
.await
.map_err(|e| PhotonError::Internal(format!("fluvio connect {}: {e}", config.endpoint)))?;
Ok(Arc::new(client))
}
pub fn validate_endpoint(endpoint: &str) -> Result<()> {
if endpoint.trim().is_empty() {
return Err(PhotonError::Internal(
"PHOTON_FLUVIO_ENDPOINT empty after parsing".into(),
));
}
Ok(())
}