use clap::{ArgAction, Args};
use pezsc_network::config::Role;
use pezsc_service::config::OffchainWorkerConfig;
use crate::{error, OffchainWorkerEnabled};
#[derive(Debug, Clone, Args)]
pub struct OffchainWorkerParams {
#[arg(
long = "offchain-worker",
value_name = "ENABLED",
value_enum,
ignore_case = true,
default_value_t = OffchainWorkerEnabled::WhenAuthority
)]
pub enabled: OffchainWorkerEnabled,
#[arg(long = "enable-offchain-indexing", value_name = "ENABLE_OFFCHAIN_INDEXING", default_value_t = false, action = ArgAction::Set)]
pub indexing_enabled: bool,
}
impl OffchainWorkerParams {
pub fn offchain_worker(&self, role: &Role) -> error::Result<OffchainWorkerConfig> {
let enabled = match (&self.enabled, role) {
(OffchainWorkerEnabled::WhenAuthority, Role::Authority { .. }) => true,
(OffchainWorkerEnabled::Always, _) => true,
(OffchainWorkerEnabled::Never, _) => false,
(OffchainWorkerEnabled::WhenAuthority, _) => false,
};
let indexing_enabled = self.indexing_enabled;
Ok(OffchainWorkerConfig { enabled, indexing_enabled })
}
}