use clap::Args;
use surreal_sync_core::ZeroTemporalPolicy;
use crate::SurrealConfig;
#[derive(Args, Clone, Debug)]
pub struct SurrealCliOpts {
#[arg(
long,
default_value = "http://localhost:8000",
env = "SURREAL_ENDPOINT"
)]
pub surreal_endpoint: String,
#[arg(long, default_value = "root", env = "SURREAL_USERNAME")]
pub surreal_username: String,
#[arg(long, default_value = "root", env = "SURREAL_PASSWORD")]
pub surreal_password: String,
#[arg(long, default_value = "1000")]
pub batch_size: usize,
#[arg(long)]
pub dry_run: bool,
#[arg(long, env = "SURREAL_SDK_VERSION", value_parser = ["v2", "v3"])]
pub surreal_sdk_version: Option<String>,
#[arg(skip)]
pub zero_temporal: ZeroTemporalPolicy,
}
impl SurrealCliOpts {
pub fn to_config(
&self,
namespace: impl Into<String>,
database: impl Into<String>,
) -> SurrealConfig {
SurrealConfig {
endpoint: self.surreal_endpoint.clone(),
username: self.surreal_username.clone(),
password: self.surreal_password.clone(),
namespace: namespace.into(),
database: database.into(),
zero_temporal: self.zero_temporal,
batch_size: self.batch_size,
dry_run: self.dry_run,
}
}
}