diff --git a/.gitignore b/.gitignore --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,9 @@ services/tunnelbroker/target services/tunnelbroker/src/libcpp/test/build +services/search-index-lambda/Cargo.lock +services/search-index-lambda/target + .eslintcache .vscode !.vscode/extensions.json diff --git a/services/search-index-lambda/Cargo.toml b/services/search-index-lambda/Cargo.toml new file mode 100644 --- /dev/null +++ b/services/search-index-lambda/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "search-index-lambda" +version = "0.1.0" +edition = "2021" + +# [profile.release] +# opt-level = 'z' +# lto = true +# codegen-units = 1 + +[dependencies] +aws_lambda_events = "0.12.0" + +lambda_runtime = "0.8.1" +log = "0.4.20" +reqwest = "0.11.22" +# serde = "1.0.136" +serde_json = "1.0.108" +simple_logger = "4.2.0" +tokio = { version = "1", features = ["macros"] } +openssl = { version = "0.10", features = ["vendored"] } +serde = "1.0.192" diff --git a/services/search-index-lambda/src/main.rs b/services/search-index-lambda/src/main.rs new file mode 100644 --- /dev/null +++ b/services/search-index-lambda/src/main.rs @@ -0,0 +1,202 @@ +use lambda_runtime::{service_fn, Error, LambdaEvent}; +use reqwest::Response; +use serde::{Deserialize, Serialize}; +use serde_json::{Map, Value}; + +const DYNAMODB_OLD_IMAGE_KEY: &str = "OldImage"; +const DYNAMODB_NEW_IMAGE_KEY: &str = "NewImage"; +const DYNAMODB_USER_ID_KEY: &str = "userID"; +const DYNAMODB_USERNAME_KEY: &str = "username"; + +#[derive(Deserialize, Serialize, Debug)] +struct User { + #[serde(rename = "userID")] + user_id: String, + username: String, +} + +#[derive(Serialize, Deserialize)] +struct UpdateByQuery { + query: Query, + + #[serde(skip_serializing_if = "Option::is_none")] + script: Option