rspotify_model/
search.rs

1//! All object related to search
2
3use serde::{Deserialize, Serialize};
4
5use crate::{
6    FullArtist, FullTrack, Page, SimplifiedAlbum, SimplifiedEpisode, SimplifiedPlaylist,
7    SimplifiedShow,
8};
9
10/// Search for playlists
11#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
12pub struct SearchPlaylists {
13    pub playlists: Page<SimplifiedPlaylist>,
14}
15
16/// Search for albums
17#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, Default)]
18pub struct SearchAlbums {
19    pub albums: Page<SimplifiedAlbum>,
20}
21
22/// Search for artists
23///
24#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
25pub struct SearchArtists {
26    pub artists: Page<FullArtist>,
27}
28
29/// Search item
30#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
31pub struct SearchTracks {
32    pub tracks: Page<FullTrack>,
33}
34
35/// Search for shows
36#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
37pub struct SearchShows {
38    pub shows: Page<SimplifiedShow>,
39}
40
41/// Search for episodes
42#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
43pub struct SearchEpisodes {
44    pub episodes: Page<SimplifiedEpisode>,
45}
46
47/// Search result of any kind
48#[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/// Search result of any multiple kinds
65#[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}