#[cfg(feature = "lambda")]
use datafold::lambda::{LambdaConfig, LambdaContext, LambdaLogging, StdoutLogger};
#[cfg(feature = "lambda")]
use datafold::storage::DatabaseConfig;
#[cfg(feature = "lambda")]
use lambda_runtime::{run, service_fn, Error, LambdaEvent};
#[cfg(feature = "lambda")]
use serde_json::{json, Value};
#[cfg(feature = "lambda")]
use std::sync::Arc;
#[cfg(feature = "lambda")]
async fn function_handler(event: LambdaEvent<Value>) -> Result<Value, Error> {
tracing::info!("Logger test handler invoked");
let user_id = event
.payload
.get("user_id")
.and_then(|v| v.as_str())
.unwrap_or("anonymous");
tracing::info!("Testing logger for user: {}", user_id);
match LambdaContext::test_logger(user_id).await {
Ok(result) => {
tracing::info!("Logger test completed successfully");
Ok(json!({
"statusCode": 200,
"body": result
}))
}
Err(e) => {
tracing::error!("Logger test failed: {}", e);
Ok(json!({
"statusCode": 500,
"body": {
"success": false,
"error": e.to_string()
}
}))
}
}
}
#[cfg(feature = "lambda")]
#[tokio::main]
async fn main() -> Result<(), Error> {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
.with_target(false)
.without_time() .init();
tracing::info!("Initializing Lambda Logger Test...");
let storage_config = DatabaseConfig::Local {
path: std::env::temp_dir(),
};
let config = LambdaConfig::new(storage_config, LambdaLogging::Stdout);
LambdaContext::init(config)
.await
.map_err(|e| format!("Failed to initialize Lambda context: {}", e))?;
tracing::info!("Lambda Logger Test initialized successfully");
tracing::info!("Ready to process logger test requests");
run(service_fn(function_handler)).await
}
#[cfg(not(feature = "lambda"))]
fn main() {
println!("This example requires the 'lambda' feature flag.");
println!("Run with: cargo run --example lambda_simple_logger_test --features lambda");
println!();
println!("This is a simple example for AWS Lambda deployment that uses");
println!("the built-in LambdaContext::test_logger() method.");
println!();
println!("Deploy to Lambda and invoke with:");
println!(r#" {{ "user_id": "test_user_123" }}"#);
}