statsig_rust/event_logging/event_queue/
batch.rs

1use crate::event_logging::statsig_event_internal::StatsigEventInternal;
2use crate::log_event_payload::{LogEventPayload, LogEventRequest};
3use crate::statsig_metadata::StatsigMetadataWithLogEventExtras;
4use serde_json::json;
5
6pub struct EventBatch {
7    pub attempts: u8,
8    pub events: Vec<StatsigEventInternal>,
9}
10
11impl EventBatch {
12    pub fn new(events: Vec<StatsigEventInternal>) -> Self {
13        Self {
14            events,
15            attempts: 0,
16        }
17    }
18
19    pub fn get_log_event_request(
20        &self,
21        statsig_metadata: StatsigMetadataWithLogEventExtras,
22    ) -> LogEventRequest {
23        let payload = LogEventPayload {
24            events: json!(self.events),
25            statsig_metadata: json!(statsig_metadata),
26        };
27
28        LogEventRequest {
29            payload,
30            event_count: self.events.len() as u64,
31            retries: self.attempts as u32,
32        }
33    }
34}