use crate::engine::functions::FunctionConfig;
use datalogic_rs::Logic;
use serde::Deserialize;
use serde_json::Value;
use std::sync::Arc;
#[derive(Clone, Debug, Deserialize)]
pub struct Task {
pub id: String,
#[doc(hidden)]
#[serde(skip)]
pub id_arc: Arc<str>,
pub name: String,
pub description: Option<String>,
#[serde(default = "default_condition")]
pub condition: Value,
#[doc(hidden)]
#[serde(skip)]
pub compiled_condition: Option<Arc<Logic>>,
pub function: FunctionConfig,
#[serde(default)]
pub continue_on_error: bool,
}
impl Task {
pub fn action(id: &str, name: &str, function: FunctionConfig) -> Self {
Task {
id: id.to_string(),
id_arc: Arc::from(id),
name: name.to_string(),
description: None,
condition: Value::Bool(true),
compiled_condition: None,
function,
continue_on_error: false,
}
}
}
fn default_condition() -> Value {
Value::Bool(true)
}