Skip to main content

CommonLibrary/Telemetry/
Initialize.rs

1//! Sidecar boot. Idempotent: subsequent calls are no-ops because
2//! `OnceLock::set` returns `Err`. Pass the `Tier` so every emitted
3//! event is tagged correctly without per-call boilerplate.
4//!
5//! Usage:
6//! ```ignore
7//! use CommonLibrary::Telemetry::{Initialize, Tier};
8//!
9//! #[tokio::main]
10//! async fn main() {
11//!     Initialize::Fn(Tier::Tier::Air).await;
12//!     // ... rest of sidecar boot ...
13//! }
14//! ```
15
16use crate::Telemetry::{CaptureSession, Client, IsAllowed, Tier};
17
18pub async fn Fn(Tier:Tier::Tier) {
19	let _ = Client::TIER.set(Tier);
20
21	if !IsAllowed::PostHog() {
22		return;
23	}
24
25	let Configuration = IsAllowed::Cached();
26
27	let Options = match posthog_rs::ClientOptionsBuilder::default()
28		.api_key(Configuration.Key.clone())
29		.host(Configuration.Host.clone())
30		.build()
31	{
32		Ok(O) => O,
33
34		Err(_) => return,
35	};
36
37	let PostHogClient = posthog_rs::client(Options).await;
38
39	let _ = Client::CLIENT.set(PostHogClient);
40
41	CaptureSession::Fn();
42}