use std::collections::HashSet;
use std::sync::{LazyLock, Mutex};
use anyhow::Result;
static RELATION_REGISTRY: LazyLock<Mutex<HashSet<&'static str>>> =
LazyLock::new(|| Mutex::new(HashSet::new()));
pub trait RelationMeta {
fn relation_name() -> &'static str;
}
pub fn register_relation(name: &'static str) -> &'static str {
let mut registry = RELATION_REGISTRY
.lock()
.unwrap_or_else(|err| err.into_inner());
registry.insert(name);
name
}
pub fn relation_name<R: RelationMeta>() -> &'static str {
R::relation_name()
}
pub fn ensure_relation_name(name: &str) -> Result<()> {
let _ = name;
Ok(())
}
#[cfg(test)]
#[path = "relation_tests.rs"]
mod tests;