use fred::prelude::Builder;
pub(crate) mod types;
#[derive(Debug, thiserror::Error, miette::Diagnostic)]
#[error(transparent)]
#[remain::sorted]
pub(crate) enum Error {
Fred(#[from] fred::error::Error),
}
#[derive(Debug, Clone, clap::Args)]
#[group(id = "valkey")]
#[remain::sorted]
pub(crate) struct ValkeyOptions {
#[command(flatten)]
pub(crate) config: types::config::Config,
#[command(flatten)]
pub(crate) connection: types::config::ConnectionConfig,
}
impl TryFrom<ValkeyOptions> for fred::clients::Client {
type Error = Error;
fn try_from(value: ValkeyOptions) -> Result<Self, Self::Error> {
let ValkeyOptions { config, connection } = value;
let config = config.into();
let connection = connection.into();
let client = Builder::from_config(config).set_connection_config(connection).build()?;
Ok(client)
}
}