1use std::sync::OnceLock;
2use uuid::Uuid;
3
4static EXECUTION_RUN_ID: OnceLock<Uuid> = OnceLock::new();
5static EXECUTION_GROUP_ID: OnceLock<Uuid> = OnceLock::new();
6
7#[allow(unused)]
8pub fn set_execution_run_id(uuid: Uuid) -> Result<(), ()> {
9 EXECUTION_RUN_ID.set(uuid).map_err(|_| ())
10}
11
12#[allow(unused)]
13pub fn set_execution_group_id(uuid: Uuid) -> Result<(), ()> {
14 EXECUTION_GROUP_ID.set(uuid).map_err(|_| ())
15}
16
17pub fn execution_run_id() -> &'static Uuid {
18 EXECUTION_RUN_ID.get_or_init(|| {
19 std::env::var("MELODIUM_RUN_ID")
20 .map(|var| Uuid::parse_str(&var).ok())
21 .ok()
22 .flatten()
23 .unwrap_or_else(|| Uuid::new_v4())
24 })
25}
26
27pub fn execution_group_id() -> &'static Uuid {
28 EXECUTION_GROUP_ID.get_or_init(|| {
29 std::env::var("MELODIUM_GROUP_ID")
30 .map(|var| Uuid::parse_str(&var).ok())
31 .ok()
32 .flatten()
33 .unwrap_or_else(|| Uuid::new_v4())
34 })
35}