/*
 * Orvanta API
 *
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.2
 * Contact: contact@orvanta.cloud
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

/// StopAfterIf : Early termination condition for a module
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct StopAfterIf {
    /// If true, following steps are skipped when this condition triggers
    #[serde(rename = "skip_if_stopped", skip_serializing_if = "Option::is_none")]
    pub skip_if_stopped: Option<bool>,
    /// JavaScript expression evaluated after the module runs. Can use 'result' (step's result) or 'flow_input'. Return true to stop
    #[serde(rename = "expr")]
    pub expr: String,
    /// Custom error message when stopping with an error. Mutually exclusive with skip_if_stopped. If set to a non-empty string, the flow stops with this error. If empty string, a default error message is used. If null or omitted, no error is raised.
    #[serde(rename = "error_message", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
    pub error_message: Option<Option<String>>,
}

impl StopAfterIf {
    /// Early termination condition for a module
    pub fn new(expr: String) -> StopAfterIf {
        StopAfterIf {
            skip_if_stopped: None,
            expr,
            error_message: None,
        }
    }
}

