Skip to main content

melodium_engine/
ids.rs

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}