// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct UpdateJobExecutionOutput {
    /// <p>A JobExecutionState object.</p>
    pub execution_state: std::option::Option<crate::model::JobExecutionState>,
    /// <p>The contents of the Job Documents.</p>
    pub job_document: std::option::Option<std::string::String>,
}
impl UpdateJobExecutionOutput {
    /// <p>A JobExecutionState object.</p>
    pub fn execution_state(&self) -> std::option::Option<&crate::model::JobExecutionState> {
        self.execution_state.as_ref()
    }
    /// <p>The contents of the Job Documents.</p>
    pub fn job_document(&self) -> std::option::Option<&str> {
        self.job_document.as_deref()
    }
}
impl std::fmt::Debug for UpdateJobExecutionOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("UpdateJobExecutionOutput");
        formatter.field("execution_state", &self.execution_state);
        formatter.field("job_document", &self.job_document);
        formatter.finish()
    }
}
/// See [`UpdateJobExecutionOutput`](crate::output::UpdateJobExecutionOutput)
pub mod update_job_execution_output {
    /// A builder for [`UpdateJobExecutionOutput`](crate::output::UpdateJobExecutionOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) execution_state: std::option::Option<crate::model::JobExecutionState>,
        pub(crate) job_document: std::option::Option<std::string::String>,
    }
    impl Builder {
        /// <p>A JobExecutionState object.</p>
        pub fn execution_state(mut self, input: crate::model::JobExecutionState) -> Self {
            self.execution_state = Some(input);
            self
        }
        /// <p>A JobExecutionState object.</p>
        pub fn set_execution_state(
            mut self,
            input: std::option::Option<crate::model::JobExecutionState>,
        ) -> Self {
            self.execution_state = input;
            self
        }
        /// <p>The contents of the Job Documents.</p>
        pub fn job_document(mut self, input: impl Into<std::string::String>) -> Self {
            self.job_document = Some(input.into());
            self
        }
        /// <p>The contents of the Job Documents.</p>
        pub fn set_job_document(mut self, input: std::option::Option<std::string::String>) -> Self {
            self.job_document = input;
            self
        }
        /// Consumes the builder and constructs a [`UpdateJobExecutionOutput`](crate::output::UpdateJobExecutionOutput)
        pub fn build(self) -> crate::output::UpdateJobExecutionOutput {
            crate::output::UpdateJobExecutionOutput {
                execution_state: self.execution_state,
                job_document: self.job_document,
            }
        }
    }
}
impl UpdateJobExecutionOutput {
    /// Creates a new builder-style object to manufacture [`UpdateJobExecutionOutput`](crate::output::UpdateJobExecutionOutput)
    pub fn builder() -> crate::output::update_job_execution_output::Builder {
        crate::output::update_job_execution_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct StartNextPendingJobExecutionOutput {
    /// <p>A JobExecution object.</p>
    pub execution: std::option::Option<crate::model::JobExecution>,
}
impl StartNextPendingJobExecutionOutput {
    /// <p>A JobExecution object.</p>
    pub fn execution(&self) -> std::option::Option<&crate::model::JobExecution> {
        self.execution.as_ref()
    }
}
impl std::fmt::Debug for StartNextPendingJobExecutionOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("StartNextPendingJobExecutionOutput");
        formatter.field("execution", &self.execution);
        formatter.finish()
    }
}
/// See [`StartNextPendingJobExecutionOutput`](crate::output::StartNextPendingJobExecutionOutput)
pub mod start_next_pending_job_execution_output {
    /// A builder for [`StartNextPendingJobExecutionOutput`](crate::output::StartNextPendingJobExecutionOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) execution: std::option::Option<crate::model::JobExecution>,
    }
    impl Builder {
        /// <p>A JobExecution object.</p>
        pub fn execution(mut self, input: crate::model::JobExecution) -> Self {
            self.execution = Some(input);
            self
        }
        /// <p>A JobExecution object.</p>
        pub fn set_execution(
            mut self,
            input: std::option::Option<crate::model::JobExecution>,
        ) -> Self {
            self.execution = input;
            self
        }
        /// Consumes the builder and constructs a [`StartNextPendingJobExecutionOutput`](crate::output::StartNextPendingJobExecutionOutput)
        pub fn build(self) -> crate::output::StartNextPendingJobExecutionOutput {
            crate::output::StartNextPendingJobExecutionOutput {
                execution: self.execution,
            }
        }
    }
}
impl StartNextPendingJobExecutionOutput {
    /// Creates a new builder-style object to manufacture [`StartNextPendingJobExecutionOutput`](crate::output::StartNextPendingJobExecutionOutput)
    pub fn builder() -> crate::output::start_next_pending_job_execution_output::Builder {
        crate::output::start_next_pending_job_execution_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct GetPendingJobExecutionsOutput {
    /// <p>A list of JobExecutionSummary objects with status IN_PROGRESS.</p>
    pub in_progress_jobs: std::option::Option<std::vec::Vec<crate::model::JobExecutionSummary>>,
    /// <p>A list of JobExecutionSummary objects with status QUEUED.</p>
    pub queued_jobs: std::option::Option<std::vec::Vec<crate::model::JobExecutionSummary>>,
}
impl GetPendingJobExecutionsOutput {
    /// <p>A list of JobExecutionSummary objects with status IN_PROGRESS.</p>
    pub fn in_progress_jobs(&self) -> std::option::Option<&[crate::model::JobExecutionSummary]> {
        self.in_progress_jobs.as_deref()
    }
    /// <p>A list of JobExecutionSummary objects with status QUEUED.</p>
    pub fn queued_jobs(&self) -> std::option::Option<&[crate::model::JobExecutionSummary]> {
        self.queued_jobs.as_deref()
    }
}
impl std::fmt::Debug for GetPendingJobExecutionsOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("GetPendingJobExecutionsOutput");
        formatter.field("in_progress_jobs", &self.in_progress_jobs);
        formatter.field("queued_jobs", &self.queued_jobs);
        formatter.finish()
    }
}
/// See [`GetPendingJobExecutionsOutput`](crate::output::GetPendingJobExecutionsOutput)
pub mod get_pending_job_executions_output {
    /// A builder for [`GetPendingJobExecutionsOutput`](crate::output::GetPendingJobExecutionsOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) in_progress_jobs:
            std::option::Option<std::vec::Vec<crate::model::JobExecutionSummary>>,
        pub(crate) queued_jobs:
            std::option::Option<std::vec::Vec<crate::model::JobExecutionSummary>>,
    }
    impl Builder {
        /// Appends an item to `in_progress_jobs`.
        ///
        /// To override the contents of this collection use [`set_in_progress_jobs`](Self::set_in_progress_jobs).
        ///
        /// <p>A list of JobExecutionSummary objects with status IN_PROGRESS.</p>
        pub fn in_progress_jobs(mut self, input: crate::model::JobExecutionSummary) -> Self {
            let mut v = self.in_progress_jobs.unwrap_or_default();
            v.push(input);
            self.in_progress_jobs = Some(v);
            self
        }
        /// <p>A list of JobExecutionSummary objects with status IN_PROGRESS.</p>
        pub fn set_in_progress_jobs(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::JobExecutionSummary>>,
        ) -> Self {
            self.in_progress_jobs = input;
            self
        }
        /// Appends an item to `queued_jobs`.
        ///
        /// To override the contents of this collection use [`set_queued_jobs`](Self::set_queued_jobs).
        ///
        /// <p>A list of JobExecutionSummary objects with status QUEUED.</p>
        pub fn queued_jobs(mut self, input: crate::model::JobExecutionSummary) -> Self {
            let mut v = self.queued_jobs.unwrap_or_default();
            v.push(input);
            self.queued_jobs = Some(v);
            self
        }
        /// <p>A list of JobExecutionSummary objects with status QUEUED.</p>
        pub fn set_queued_jobs(
            mut self,
            input: std::option::Option<std::vec::Vec<crate::model::JobExecutionSummary>>,
        ) -> Self {
            self.queued_jobs = input;
            self
        }
        /// Consumes the builder and constructs a [`GetPendingJobExecutionsOutput`](crate::output::GetPendingJobExecutionsOutput)
        pub fn build(self) -> crate::output::GetPendingJobExecutionsOutput {
            crate::output::GetPendingJobExecutionsOutput {
                in_progress_jobs: self.in_progress_jobs,
                queued_jobs: self.queued_jobs,
            }
        }
    }
}
impl GetPendingJobExecutionsOutput {
    /// Creates a new builder-style object to manufacture [`GetPendingJobExecutionsOutput`](crate::output::GetPendingJobExecutionsOutput)
    pub fn builder() -> crate::output::get_pending_job_executions_output::Builder {
        crate::output::get_pending_job_executions_output::Builder::default()
    }
}

#[allow(missing_docs)] // documentation missing in model
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq)]
pub struct DescribeJobExecutionOutput {
    /// <p>Contains data about a job execution.</p>
    pub execution: std::option::Option<crate::model::JobExecution>,
}
impl DescribeJobExecutionOutput {
    /// <p>Contains data about a job execution.</p>
    pub fn execution(&self) -> std::option::Option<&crate::model::JobExecution> {
        self.execution.as_ref()
    }
}
impl std::fmt::Debug for DescribeJobExecutionOutput {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        let mut formatter = f.debug_struct("DescribeJobExecutionOutput");
        formatter.field("execution", &self.execution);
        formatter.finish()
    }
}
/// See [`DescribeJobExecutionOutput`](crate::output::DescribeJobExecutionOutput)
pub mod describe_job_execution_output {
    /// A builder for [`DescribeJobExecutionOutput`](crate::output::DescribeJobExecutionOutput)
    #[non_exhaustive]
    #[derive(std::default::Default, std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
    pub struct Builder {
        pub(crate) execution: std::option::Option<crate::model::JobExecution>,
    }
    impl Builder {
        /// <p>Contains data about a job execution.</p>
        pub fn execution(mut self, input: crate::model::JobExecution) -> Self {
            self.execution = Some(input);
            self
        }
        /// <p>Contains data about a job execution.</p>
        pub fn set_execution(
            mut self,
            input: std::option::Option<crate::model::JobExecution>,
        ) -> Self {
            self.execution = input;
            self
        }
        /// Consumes the builder and constructs a [`DescribeJobExecutionOutput`](crate::output::DescribeJobExecutionOutput)
        pub fn build(self) -> crate::output::DescribeJobExecutionOutput {
            crate::output::DescribeJobExecutionOutput {
                execution: self.execution,
            }
        }
    }
}
impl DescribeJobExecutionOutput {
    /// Creates a new builder-style object to manufacture [`DescribeJobExecutionOutput`](crate::output::DescribeJobExecutionOutput)
    pub fn builder() -> crate::output::describe_job_execution_output::Builder {
        crate::output::describe_job_execution_output::Builder::default()
    }
}
