use super::{Pipeline, PipelineCoupling};
use crate::framework::endpoint::{HerokuEndpoint, Method};
pub struct PipelineUpdate<'a> {
pub pipeline_id: &'a str,
pub params: PipelineUpdateParams<'a>,
}
#[cfg(feature = "builder")]
impl<'a> PipelineUpdate<'a> {
pub fn new(pipeline_id: &'a str) -> PipelineUpdate<'a> {
PipelineUpdate {
pipeline_id,
params: PipelineUpdateParams { name: None },
}
}
pub fn name(&mut self, name: &'a str) -> &mut Self {
self.params.name = Some(name);
self
}
pub fn build(&self) -> PipelineUpdate<'a> {
PipelineUpdate {
pipeline_id: self.pipeline_id,
params: PipelineUpdateParams {
name: self.params.name,
},
}
}
}
#[serde_with::skip_serializing_none]
#[derive(Serialize, Clone, Debug)]
pub struct PipelineUpdateParams<'a> {
pub name: Option<&'a str>,
}
impl<'a> HerokuEndpoint<Pipeline, (), PipelineUpdateParams<'a>> for PipelineUpdate<'a> {
fn method(&self) -> Method {
Method::Patch
}
fn path(&self) -> String {
format!("pipelines/{}", self.pipeline_id)
}
fn body(&self) -> Option<PipelineUpdateParams<'a>> {
Some(self.params.clone())
}
}
pub struct PipelineCouplingUpdate<'a> {
pub coupling_id: &'a str,
pub params: PipelineCouplingUpdateParams<'a>,
}
#[cfg(feature = "builder")]
impl<'a> PipelineCouplingUpdate<'a> {
pub fn new(coupling_id: &'a str) -> PipelineCouplingUpdate {
PipelineCouplingUpdate {
coupling_id,
params: PipelineCouplingUpdateParams { stage: None },
}
}
pub fn stage(&mut self, stage: &'a str) -> &mut Self {
self.params.stage = Some(stage);
self
}
pub fn build(&self) -> PipelineCouplingUpdate<'a> {
PipelineCouplingUpdate {
coupling_id: self.coupling_id,
params: PipelineCouplingUpdateParams {
stage: self.params.stage,
},
}
}
}
#[derive(Serialize, Clone, Debug)]
pub struct PipelineCouplingUpdateParams<'a> {
pub stage: Option<&'a str>,
}
impl<'a> HerokuEndpoint<PipelineCoupling, (), PipelineCouplingUpdateParams<'a>>
for PipelineCouplingUpdate<'a>
{
fn method(&self) -> Method {
Method::Patch
}
fn path(&self) -> String {
format!("pipeline-couplings/{}", self.coupling_id)
}
fn body(&self) -> Option<PipelineCouplingUpdateParams<'a>> {
Some(self.params.clone())
}
}