diff --git a/lambda-events/src/event/documentdb/events/drop_database_event.rs b/lambda-events/src/event/documentdb/events/drop_database_event.rs index c51e345c..273c897c 100644 --- a/lambda-events/src/event/documentdb/events/drop_database_event.rs +++ b/lambda-events/src/event/documentdb/events/drop_database_event.rs @@ -7,7 +7,9 @@ use super::commom_types::{AnyDocument, DatabaseCollection, DocumentId, Timestamp pub struct ChangeDropDatabaseEvent { #[serde(rename = "_id")] id: DocumentId, - cluster_time: Timestamp, + #[serde(default)] + cluster_time: Option, + #[serde(default)] #[serde(rename = "lsid")] ls_id: Option, ns: DatabaseCollection, diff --git a/lambda-events/src/event/documentdb/events/drop_event.rs b/lambda-events/src/event/documentdb/events/drop_event.rs index 866ce143..a6f92934 100644 --- a/lambda-events/src/event/documentdb/events/drop_event.rs +++ b/lambda-events/src/event/documentdb/events/drop_event.rs @@ -6,7 +6,8 @@ use serde::{Deserialize, Serialize}; pub struct ChangeDropEvent { #[serde(rename = "_id")] id: DocumentId, - cluster_time: Timestamp, + #[serde(default)] + cluster_time: Option, #[serde(default)] #[serde(rename = "lsid")] ls_id: Option, diff --git a/lambda-events/src/event/documentdb/events/insert_event.rs b/lambda-events/src/event/documentdb/events/insert_event.rs index 09ab66b2..de9b5843 100644 --- a/lambda-events/src/event/documentdb/events/insert_event.rs +++ b/lambda-events/src/event/documentdb/events/insert_event.rs @@ -13,7 +13,7 @@ pub struct ChangeInsertEvent { document_key: DocumentKeyId, #[serde(default)] #[serde(rename = "lsid")] - ls_id: Option, + ls_id: Option, ns: DatabaseCollection, //operation_type: String, #[serde(default)] diff --git a/lambda-events/src/event/documentdb/events/replace_event.rs b/lambda-events/src/event/documentdb/events/replace_event.rs index 4a0e58ad..c253e272 100644 --- a/lambda-events/src/event/documentdb/events/replace_event.rs +++ b/lambda-events/src/event/documentdb/events/replace_event.rs @@ -12,7 +12,7 @@ pub struct ChangeReplaceEvent { document_key: DocumentKeyId, #[serde(default)] #[serde(rename = "lsid")] - ls_id: Option, + ls_id: Option, ns: DatabaseCollection, // operation_type: String, #[serde(default)] diff --git a/lambda-events/src/event/documentdb/events/update_event.rs b/lambda-events/src/event/documentdb/events/update_event.rs index 8698485a..04369cf0 100644 --- a/lambda-events/src/event/documentdb/events/update_event.rs +++ b/lambda-events/src/event/documentdb/events/update_event.rs @@ -2,6 +2,21 @@ use serde::{Deserialize, Serialize}; use super::commom_types::{AnyDocument, DatabaseCollection, DocumentId, DocumentKeyId, Timestamp}; +#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct UpdateTruncate { + field: String, + new_size: usize, +} + +#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct UpdateDescription { + removed_fields: Vec, + truncated_arrays: Vec, + updated_fields: AnyDocument, +} + #[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)] #[serde(rename_all = "camelCase")] pub struct ChangeUpdateEvent { @@ -10,10 +25,12 @@ pub struct ChangeUpdateEvent { #[serde(default)] cluster_time: Option, document_key: DocumentKeyId, + #[serde(default)] #[serde(rename = "lsid")] - ls_id: Option, + ls_id: Option, ns: DatabaseCollection, // operation_type: String, + update_description: UpdateDescription, #[serde(default)] txn_number: Option, } diff --git a/lambda-events/src/fixtures/example-documentdb-update-event.json b/lambda-events/src/fixtures/example-documentdb-update-event.json index dbb19159..38f3e659 100644 --- a/lambda-events/src/fixtures/example-documentdb-update-event.json +++ b/lambda-events/src/fixtures/example-documentdb-update-event.json @@ -1,29 +1,43 @@ { - "eventSourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:canaryclusterb2a659a2-qo5tcmqkcl03", - "events": [ - { - "event": { + "eventSourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:canaryclusterb2a659a2-qo5tcmqkcl03", + "events": [ + { + "event": { + "_id": { + "_data": "0163eeb6e7000000090100000009000041e1" + }, + "operationType": "update", + "clusterTime": { + "$timestamp": { + "t": 1676588775, + "i": 9 + } + }, + "ns": { + "db": "test_database", + "coll": "test_collection" + }, + "documentKey": { "_id": { - "_data": "0163eeb6e7000000090100000009000041e1" + "$oid": "63eeb6e7d418cd98afb1c1d7" + } + }, + "updateDescription": { + "updatedFields": { + "email": "alice@10gen.com" }, - "clusterTime": { - "$timestamp": { - "t": 1676588775, - "i": 9 + "removedFields": [ + "phoneNumber" + ], + "truncatedArrays": [ + { + "field": "vacation_time", + "newSize": 36 } - }, - "documentKey": { - "_id": { - "$oid": "63eeb6e7d418cd98afb1c1d7" - } - }, - "ns": { - "db": "test_database", - "coll": "test_collection" - }, - "operationType": "update" + ] } } - ], - "eventSource": "aws:docdb" - } \ No newline at end of file + } + ], + "eventSource": "aws:docdb" +} \ No newline at end of file