Skip to content

Commit 1e4e203

Browse files
authored
Hotfix/documentdb (#742)
* Fix field types: - ls_nd must be an AnyDocument - cluster_time must be optional, because it's new at version 4.0 * Fields bug fix
1 parent 3c53476 commit 1e4e203

File tree

6 files changed

+62
-28
lines changed

6 files changed

+62
-28
lines changed

lambda-events/src/event/documentdb/events/drop_database_event.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ use super::commom_types::{AnyDocument, DatabaseCollection, DocumentId, Timestamp
77
pub struct ChangeDropDatabaseEvent {
88
#[serde(rename = "_id")]
99
id: DocumentId,
10-
cluster_time: Timestamp,
10+
#[serde(default)]
11+
cluster_time: Option<Timestamp>,
12+
#[serde(default)]
1113
#[serde(rename = "lsid")]
1214
ls_id: Option<AnyDocument>,
1315
ns: DatabaseCollection,

lambda-events/src/event/documentdb/events/drop_event.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ use serde::{Deserialize, Serialize};
66
pub struct ChangeDropEvent {
77
#[serde(rename = "_id")]
88
id: DocumentId,
9-
cluster_time: Timestamp,
9+
#[serde(default)]
10+
cluster_time: Option<Timestamp>,
1011
#[serde(default)]
1112
#[serde(rename = "lsid")]
1213
ls_id: Option<AnyDocument>,

lambda-events/src/event/documentdb/events/insert_event.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub struct ChangeInsertEvent {
1313
document_key: DocumentKeyId,
1414
#[serde(default)]
1515
#[serde(rename = "lsid")]
16-
ls_id: Option<String>,
16+
ls_id: Option<AnyDocument>,
1717
ns: DatabaseCollection,
1818
//operation_type: String,
1919
#[serde(default)]

lambda-events/src/event/documentdb/events/replace_event.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pub struct ChangeReplaceEvent {
1212
document_key: DocumentKeyId,
1313
#[serde(default)]
1414
#[serde(rename = "lsid")]
15-
ls_id: Option<String>,
15+
ls_id: Option<AnyDocument>,
1616
ns: DatabaseCollection,
1717
// operation_type: String,
1818
#[serde(default)]

lambda-events/src/event/documentdb/events/update_event.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,21 @@ use serde::{Deserialize, Serialize};
22

33
use super::commom_types::{AnyDocument, DatabaseCollection, DocumentId, DocumentKeyId, Timestamp};
44

5+
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
6+
#[serde(rename_all = "camelCase")]
7+
pub struct UpdateTruncate {
8+
field: String,
9+
new_size: usize,
10+
}
11+
12+
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
13+
#[serde(rename_all = "camelCase")]
14+
pub struct UpdateDescription {
15+
removed_fields: Vec<String>,
16+
truncated_arrays: Vec<UpdateTruncate>,
17+
updated_fields: AnyDocument,
18+
}
19+
520
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
621
#[serde(rename_all = "camelCase")]
722
pub struct ChangeUpdateEvent {
@@ -10,10 +25,12 @@ pub struct ChangeUpdateEvent {
1025
#[serde(default)]
1126
cluster_time: Option<Timestamp>,
1227
document_key: DocumentKeyId,
28+
#[serde(default)]
1329
#[serde(rename = "lsid")]
14-
ls_id: Option<String>,
30+
ls_id: Option<AnyDocument>,
1531
ns: DatabaseCollection,
1632
// operation_type: String,
33+
update_description: UpdateDescription,
1734
#[serde(default)]
1835
txn_number: Option<AnyDocument>,
1936
}
Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,43 @@
11
{
2-
"eventSourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:canaryclusterb2a659a2-qo5tcmqkcl03",
3-
"events": [
4-
{
5-
"event": {
2+
"eventSourceArn": "arn:aws:rds:us-east-1:123456789012:cluster:canaryclusterb2a659a2-qo5tcmqkcl03",
3+
"events": [
4+
{
5+
"event": {
6+
"_id": {
7+
"_data": "0163eeb6e7000000090100000009000041e1"
8+
},
9+
"operationType": "update",
10+
"clusterTime": {
11+
"$timestamp": {
12+
"t": 1676588775,
13+
"i": 9
14+
}
15+
},
16+
"ns": {
17+
"db": "test_database",
18+
"coll": "test_collection"
19+
},
20+
"documentKey": {
621
"_id": {
7-
"_data": "0163eeb6e7000000090100000009000041e1"
22+
"$oid": "63eeb6e7d418cd98afb1c1d7"
23+
}
24+
},
25+
"updateDescription": {
26+
"updatedFields": {
27+
"email": "alice@10gen.com"
828
},
9-
"clusterTime": {
10-
"$timestamp": {
11-
"t": 1676588775,
12-
"i": 9
29+
"removedFields": [
30+
"phoneNumber"
31+
],
32+
"truncatedArrays": [
33+
{
34+
"field": "vacation_time",
35+
"newSize": 36
1336
}
14-
},
15-
"documentKey": {
16-
"_id": {
17-
"$oid": "63eeb6e7d418cd98afb1c1d7"
18-
}
19-
},
20-
"ns": {
21-
"db": "test_database",
22-
"coll": "test_collection"
23-
},
24-
"operationType": "update"
37+
]
2538
}
2639
}
27-
],
28-
"eventSource": "aws:docdb"
29-
}
40+
}
41+
],
42+
"eventSource": "aws:docdb"
43+
}

0 commit comments

Comments
 (0)