use async_trait::async_trait;
use super::Searchers;
use super::search_result::SearchResult;
use crate::error::SearchError;
use lyrics_core::models::TrackMetadata;
#[async_trait]
pub trait Searcher: Sync {
fn name(&self) -> &str;
fn display_name(&self) -> &str;
fn searcher_type(&self) -> Searchers;
async fn search_for_results_str(
&self,
search_string: &str,
) -> Result<Vec<SearchResult>, SearchError>;
async fn search_for_results(
&self,
track: &TrackMetadata,
) -> Result<Vec<SearchResult>, SearchError> {
self.search_for_results_str(&super::build_search_string(track))
.await
}
}