branch: main
analytics_engine.rs
1159 bytesRaw
use super::SomeSharedData;
use uuid::Uuid;
use worker::{AnalyticsEngineDataPointBuilder, Env, Request, Response, Result};
#[worker::send]
pub async fn handle_analytics_event(
req: Request,
env: Env,
_data: SomeSharedData,
) -> Result<Response> {
let dataset = match env.analytics_engine("HTTP_ANALYTICS") {
Ok(dataset) => dataset,
Err(err) => return Response::error(format!("Failed to get dataset: {err:?}"), 500),
};
let request_id = Uuid::new_v4();
// Build the event and write it to analytics engine
let point = AnalyticsEngineDataPointBuilder::new()
.indexes(vec!["index1"])
.add_blob(req.method().as_ref()) // blob1
.add_blob(request_id.as_bytes().as_ref()) // blob2
.add_double(200)
.build();
dataset.write_data_point(&point)?;
// Or write it directly from the builder using write_to
AnalyticsEngineDataPointBuilder::new()
.indexes(["index1"])
.add_blob(req.method().as_ref()) // blob1
.add_blob(req.method().as_ref()) // blob2
.add_double(200)
.write_to(&dataset)?;
return Response::ok("Events sent");
}