use serde::{Deserialize, Serialize};
use crate::{
FullArtist, FullTrack, Page, SimplifiedAlbum, SimplifiedEpisode, SimplifiedPlaylist,
SimplifiedShow,
};
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct SearchPlaylists {
pub playlists: Page<SimplifiedPlaylist>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Default)]
pub struct SearchAlbums {
pub albums: Page<SimplifiedAlbum>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct SearchArtists {
pub artists: Page<FullArtist>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct SearchTracks {
pub tracks: Page<FullTrack>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct SearchShows {
pub shows: Page<SimplifiedShow>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct SearchEpisodes {
pub episodes: Page<SimplifiedEpisode>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub enum SearchResult {
#[serde(rename = "playlists")]
Playlists(Page<SimplifiedPlaylist>),
#[serde(rename = "albums")]
Albums(Page<SimplifiedAlbum>),
#[serde(rename = "artists")]
Artists(Page<FullArtist>),
#[serde(rename = "tracks")]
Tracks(Page<FullTrack>),
#[serde(rename = "shows")]
Shows(Page<SimplifiedShow>),
#[serde(rename = "episodes")]
Episodes(Page<SimplifiedEpisode>),
}