Unverified Commit e2eca7b3 authored by Nugine's avatar Nugine
Browse files

codegen: dto: patch LifecycleExpiration

parent 5719acda
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ pub fn codegen(ops: &Operations, rust_types: &RustTypes, g: &mut Codegen) {
        match name.as_str() {
            "SelectObjectContentRequest" => continue,
            "SelectObjectContentInput" => continue,
            "LifecycleExpiration" => continue,
            _ => {}
        }

+11 −0
Original line number Diff line number Diff line
@@ -217,6 +217,17 @@ pub fn collect_rust_types(model: &smithy::Model, ops: &Operations) -> RustTypes
        }
    }

    // patch LifecycleExpiration
    {
        let Some(rust::Type::Struct(ty)) = space.get_mut("LifecycleExpiration") else { panic!() };
        for field_name in ["days", "expired_object_delete_marker"] {
            let field = ty.fields.iter_mut().find(|x| x.name == field_name).unwrap();
            field.default_value = None;
            field.option_type = true;
        }
    }

    // patch SelectObjectContent input
    {
        let Some(rust::Type::Struct(mut ty)) = space.remove("SelectObjectContentRequest") else { panic!() };
        let request = rust::Struct {
+28 −0
Original line number Diff line number Diff line
@@ -192,3 +192,31 @@ impl AwsConversion for s3s::dto::SelectObjectContentInput {
            .map_err(S3Error::internal_error)
    }
}

impl AwsConversion for s3s::dto::LifecycleExpiration {
    type Target = aws_sdk_s3::model::LifecycleExpiration;
    type Error = S3Error;

    fn try_from_aws(x: Self::Target) -> S3Result<Self> {
        Ok(Self {
            date: try_from_aws(x.date)?,
            days: ignore_default(x.days, 0),
            expired_object_delete_marker: ignore_default(x.expired_object_delete_marker, false),
        })
    }

    fn try_into_aws(x: Self) -> S3Result<Self::Target> {
        let mut y = Self::Target::builder();
        y = y.set_date(try_into_aws(x.date)?);
        y = y.set_days(x.days);
        y = y.set_expired_object_delete_marker(x.expired_object_delete_marker);
        Ok(y.build())
    }
}

fn ignore_default<T: Eq + Copy>(val: T, default: T) -> Option<T> {
    if val == default {
        return None;
    }
    Some(val)
}
+0 −21
Original line number Diff line number Diff line
@@ -4185,27 +4185,6 @@ impl AwsConversion for s3s::dto::LambdaFunctionConfiguration {
    }
}

impl AwsConversion for s3s::dto::LifecycleExpiration {
    type Target = LifecycleExpiration;
    type Error = S3Error;

    fn try_from_aws(x: Self::Target) -> S3Result<Self> {
        Ok(Self {
            date: try_from_aws(x.date)?,
            days: try_from_aws(x.days)?,
            expired_object_delete_marker: try_from_aws(x.expired_object_delete_marker)?,
        })
    }

    fn try_into_aws(x: Self) -> S3Result<Self::Target> {
        let mut y = Self::Target::builder();
        y = y.set_date(try_into_aws(x.date)?);
        y = y.set_days(Some(try_into_aws(x.days)?));
        y = y.set_expired_object_delete_marker(Some(try_into_aws(x.expired_object_delete_marker)?));
        Ok(y.build())
    }
}

impl AwsConversion for s3s::dto::LifecycleRule {
    type Target = LifecycleRule;
    type Error = S3Error;
+8 −4
Original line number Diff line number Diff line
@@ -8252,11 +8252,11 @@ pub struct LifecycleExpiration {
    pub date: Option<Date>,
    /// <p>Indicates the lifetime, in days, of the objects that are subject to the rule. The value
    /// must be a non-zero positive integer.</p>
    pub days: Days,
    pub days: Option<Days>,
    /// <p>Indicates whether Amazon S3 will remove a delete marker with no noncurrent versions. If set
    /// to true, the delete marker will be expired; if set to false the policy takes no action.
    /// This cannot be specified with Days or Date in a Lifecycle Expiration Policy.</p>
    pub expired_object_delete_marker: ExpiredObjectDeleteMarker,
    pub expired_object_delete_marker: Option<ExpiredObjectDeleteMarker>,
}
impl fmt::Debug for LifecycleExpiration {
@@ -8265,8 +8265,12 @@ impl fmt::Debug for LifecycleExpiration {
        if let Some(ref val) = self.date {
            d.field("date", val);
        }
        d.field("days", &self.days);
        d.field("expired_object_delete_marker", &self.expired_object_delete_marker);
        if let Some(ref val) = self.days {
            d.field("days", val);
        }
        if let Some(ref val) = self.expired_object_delete_marker {
            d.field("expired_object_delete_marker", val);
        }
        d.finish_non_exhaustive()
    }
}
Loading