pub mod convert;
pub mod decode;
pub mod dump;
pub mod encode;
pub mod import;
pub mod list;
pub mod r#match;
pub mod migrate;
pub mod push;
pub mod put;
pub mod settings;
pub mod validate;
pub const PIDBOX_URL: &str = "https://metadata.vraix.org/pidbox.sqlite3.zst";
pub const PIDBOX_CACHE_KEY: &str = "pidbox.sqlite3.zst";
pub const VRAIX_CACHE_TTL: std::time::Duration =
std::time::Duration::from_secs(30 * 24 * 60 * 60);
pub const DATACITE_ANNUAL_HOST: &str = "datafiles.datacite.org";
pub fn resolve_db_path(explicit: Option<&String>) -> String {
if let Some(p) = explicit {
return p.clone();
}
if let Ok(p) = std::env::var("COMMONMETA_DB") {
return p;
}
platform_default_db_path()
}
pub fn resolve_cache_db_path(explicit: Option<&String>) -> String {
if let Some(p) = explicit {
return p.clone();
}
if let Ok(p) = std::env::var("CACHE_DB") {
return p;
}
platform_default_cache_db_path()
}
fn platform_default_cache_db_path() -> String {
#[cfg(target_os = "linux")]
{
"/var/lib/commonmeta/cache.sqlite3".to_string()
}
#[cfg(target_os = "macos")]
{
let home = std::env::var("HOME").unwrap_or_default();
format!(
"{}/Library/Application Support/commonmeta/cache.sqlite3",
home
)
}
#[cfg(not(any(target_os = "macos", target_os = "linux")))]
{
"cache.sqlite3".to_string()
}
}
pub fn resolve_ror_db_path(explicit: Option<&String>) -> String {
if let Some(p) = explicit {
return p.clone();
}
if let Ok(p) = std::env::var("ROR_DB") {
return p;
}
resolve_db_path(None)
}
fn platform_default_db_path() -> String {
#[cfg(target_os = "macos")]
{
let home = std::env::var("HOME").unwrap_or_default();
format!(
"{}/Library/Application Support/commonmeta/commonmeta.sqlite3",
home
)
}
#[cfg(target_os = "linux")]
{
"/var/lib/commonmeta/commonmeta.sqlite3".to_string()
}
#[cfg(not(any(target_os = "macos", target_os = "linux")))]
{
"commonmeta.sqlite3".to_string()
}
}