#![forbid(unsafe_code)]
use lunar_lib::paths::init_directories;
pub const PROGRAM_FS_NAME: &str = "selene";
pub const PROGRAM_DISPLAY_NAME: &str = "Selene";
pub mod config;
#[cfg(feature = "database-impls")]
pub mod database;
pub mod library;
pub mod lyrics;
pub mod media_container;
pub mod utils;
pub mod symphonia_helpers;
pub fn init_dirs() -> Result<(), &'static str> {
init_directories(PROGRAM_FS_NAME)
}
pub use lunar_lib::id::Id;
pub trait SeleneIdExt<T> {
#[cfg(feature = "database-impls")]
fn to_selene_id(&self) -> String
where
T: lunar_lib::database::DatabaseEntry;
fn from_string_hash(string: impl AsRef<str>) -> Self;
}
impl<T> SeleneIdExt<T> for Id<T> {
#[cfg(feature = "database-impls")]
fn to_selene_id(&self) -> String
where
T: lunar_lib::database::DatabaseEntry,
{
format!("{}:{}", T::TREE_NAME, self)
}
fn from_string_hash(string: impl AsRef<str>) -> Self {
let hash = blake3::hash(string.as_ref().to_lowercase().as_bytes());
Self::from(*hash.as_bytes())
}
}