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

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

/// FlowModuleDebouncing : Debounce configuration for this step (EE only)
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct FlowModuleDebouncing {
    /// Delay in seconds to debounce this step's executions across flow runs
    #[serde(rename = "debounce_delay_s", skip_serializing_if = "Option::is_none")]
    pub debounce_delay_s: Option<i32>,
    /// Expression to group debounced executions. Supports $workspace and $args[name]. Default: $workspace/flow/<flow_path>-<step_id>
    #[serde(rename = "debounce_key", skip_serializing_if = "Option::is_none")]
    pub debounce_key: Option<String>,
    /// Array-type arguments to accumulate across debounced executions
    #[serde(rename = "debounce_args_to_accumulate", skip_serializing_if = "Option::is_none")]
    pub debounce_args_to_accumulate: Option<Vec<String>>,
    /// Maximum total time in seconds before forced execution
    #[serde(rename = "max_total_debouncing_time", skip_serializing_if = "Option::is_none")]
    pub max_total_debouncing_time: Option<i32>,
    /// Maximum number of debounces before forced execution
    #[serde(rename = "max_total_debounces_amount", skip_serializing_if = "Option::is_none")]
    pub max_total_debounces_amount: Option<i32>,
}

impl FlowModuleDebouncing {
    /// Debounce configuration for this step (EE only)
    pub fn new() -> FlowModuleDebouncing {
        FlowModuleDebouncing {
            debounce_delay_s: None,
            debounce_key: None,
            debounce_args_to_accumulate: None,
            max_total_debouncing_time: None,
            max_total_debounces_amount: None,
        }
    }
}

