From 43655edfb7e57ab71983ab662307fdab29863629 Mon Sep 17 00:00:00 2001 From: Spencer Stolworthy Date: Thu, 10 Jul 2025 15:41:31 +0000 Subject: [PATCH] fix(lambda-events): impl Default for all Kinesis Event structs --- lambda-events/src/encodings/time.rs | 2 +- lambda-events/src/event/kinesis/event.rs | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/lambda-events/src/encodings/time.rs b/lambda-events/src/encodings/time.rs index df22ef24..d0d9526e 100644 --- a/lambda-events/src/encodings/time.rs +++ b/lambda-events/src/encodings/time.rs @@ -29,7 +29,7 @@ impl DerefMut for MillisecondTimestamp { } /// Timestamp with second precision. -#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)] pub struct SecondTimestamp( #[serde(deserialize_with = "deserialize_seconds")] #[serde(serialize_with = "serialize_seconds")] diff --git a/lambda-events/src/event/kinesis/event.rs b/lambda-events/src/event/kinesis/event.rs index 97f4b708..a67da850 100644 --- a/lambda-events/src/event/kinesis/event.rs +++ b/lambda-events/src/event/kinesis/event.rs @@ -13,7 +13,7 @@ pub struct KinesisEvent { /// `KinesisTimeWindowEvent` represents an Amazon Dynamodb event when using time windows /// ref. -#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)] #[serde(rename_all = "camelCase")] pub struct KinesisTimeWindowEvent { #[serde(rename = "KinesisEvent")] @@ -34,7 +34,7 @@ pub struct KinesisTimeWindowEventResponse { // pub batch_item_failures: Vec, } -#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)] #[serde(rename_all = "camelCase")] pub struct KinesisEventRecord { /// nolint: stylecheck @@ -59,7 +59,7 @@ pub struct KinesisEventRecord { pub kinesis: KinesisRecord, } -#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)] #[serde(rename_all = "camelCase")] pub struct KinesisRecord { pub approximate_arrival_timestamp: SecondTimestamp, @@ -110,10 +110,16 @@ mod test { assert_eq!(parsed, reparsed); } + /// `cargo lambda init` autogenerates code that relies on `Default` being implemented for event structs. + /// + /// This test validates that `Default` is implemented for each KinesisEvent struct. #[test] #[cfg(feature = "kinesis")] - fn default_kinesis_event() { - let event = KinesisEvent::default(); - assert_eq!(event.records, vec![]); + fn test_ensure_default_implemented_for_structs() { + let _kinesis_event = KinesisEvent::default(); + let _kinesis_time_window_event = KinesisTimeWindowEvent::default(); + let _kinesis_event_record = KinesisEventRecord::default(); + let _kinesis_record = KinesisRecord::default(); + let _kinesis_encryption_type = KinesisEncryptionType::default(); } }