use lastfm_edit::{Album, Artist, Track};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
#[allow(clippy::enum_variant_names)]
pub enum SearchEvent {
TrackFound { index: usize, track: Track },
AlbumFound { index: usize, album: Album },
ArtistFound { index: usize, artist: Artist },
}
pub fn output_event(event: &SearchEvent) {
if let Ok(json) = serde_json::to_string(event) {
println!("{json}");
} else {
log::error!("Failed to serialize event to JSON");
}
}
pub fn log_started(search_type: &str, query: &str, offset: usize) {
if offset > 0 {
log::info!(
"Searching for {} containing '{}' (starting from #{})...",
search_type,
query,
offset + 1
);
} else {
log::info!("Searching for {search_type} containing '{query}'...");
}
}
pub fn log_summary(total_displayed: usize, offset: usize, limit: usize) {
log::info!("Displayed {total_displayed} result(s)");
if offset > 0 {
log::info!(" (Starting from result #{})", offset + 1);
}
if limit > 0 && total_displayed >= limit {
log::info!(" (Limited to {limit} results)");
}
}
pub fn log_no_results(query: &str) {
log::info!("No results found matching '{query}'");
}