1use serde::{Deserialize, Serialize};
4
5use crate::{
6 FullArtist, FullTrack, Page, SimplifiedAlbum, SimplifiedEpisode, SimplifiedPlaylist,
7 SimplifiedShow,
8};
9
10#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
12pub struct SearchPlaylists {
13 pub playlists: Page<SimplifiedPlaylist>,
14}
15
16#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Default)]
18pub struct SearchAlbums {
19 pub albums: Page<SimplifiedAlbum>,
20}
21
22#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
25pub struct SearchArtists {
26 pub artists: Page<FullArtist>,
27}
28
29#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
31pub struct SearchTracks {
32 pub tracks: Page<FullTrack>,
33}
34
35#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
37pub struct SearchShows {
38 pub shows: Page<SimplifiedShow>,
39}
40
41#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
43pub struct SearchEpisodes {
44 pub episodes: Page<SimplifiedEpisode>,
45}
46
47#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
49pub enum SearchResult {
50 #[serde(rename = "playlists")]
51 Playlists(Page<SimplifiedPlaylist>),
52 #[serde(rename = "albums")]
53 Albums(Page<SimplifiedAlbum>),
54 #[serde(rename = "artists")]
55 Artists(Page<FullArtist>),
56 #[serde(rename = "tracks")]
57 Tracks(Page<FullTrack>),
58 #[serde(rename = "shows")]
59 Shows(Page<SimplifiedShow>),
60 #[serde(rename = "episodes")]
61 Episodes(Page<SimplifiedEpisode>),
62}
63
64#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
66pub struct SearchMultipleResult {
67 pub playlists: Option<Page<SimplifiedPlaylist>>,
68 pub albums: Option<Page<SimplifiedAlbum>>,
69 pub artists: Option<Page<FullArtist>>,
70 pub tracks: Option<Page<FullTrack>>,
71 pub shows: Option<Page<SimplifiedShow>>,
72 pub episodes: Option<Page<SimplifiedEpisode>>,
73}