artistpath_core/
lib.rs

1pub mod exploration;
2pub mod parsing;
3pub mod pathfinding;
4pub mod pathfinding_config;
5pub mod string_normalization;
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
8#[serde(rename_all = "lowercase")]
9#[derive(Default)]
10pub enum Algorithm {
11    #[default]
12    Bfs,
13    Dijkstra,
14}
15
16impl Algorithm {
17    pub fn as_str(&self) -> &'static str {
18        match self {
19            Algorithm::Bfs => "bfs",
20            Algorithm::Dijkstra => "dijkstra",
21        }
22    }
23}
24
25impl From<&str> for Algorithm {
26    fn from(s: &str) -> Self {
27        match s.to_lowercase().as_str() {
28            "dijkstra" => Algorithm::Dijkstra,
29            _ => Algorithm::Bfs, // Default to BFS
30        }
31    }
32}
33
34impl From<String> for Algorithm {
35    fn from(s: String) -> Self {
36        Algorithm::from(s.as_str())
37    }
38}
39
40// Re-export commonly used items
41pub use exploration::{ExplorationResult, ExplorationStats, explore_bfs, explore_dijkstra};
42pub use parsing::{Artist, find_artist_id, parse_unified_metadata};
43pub use pathfinding::{
44    BiDirectionalGraphs, EnhancedPathResult, bfs_find_path, dijkstra_find_path, 
45    find_paths_with_exploration, get_artist_connections,
46};
47pub use pathfinding_config::PathfindingConfig;
48
49// Re-export PyO3 module when python feature is enabled
50#[cfg(feature = "python")]
51pub use string_normalization::normalization;