use serde::{Deserialize, Serialize};
use crate::models::{album::Album, artist::Artist, playlist::Playlist, track::Track};
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct AlbumSearchResponse {
pub albums: ItemSearchResult<Box<Album>>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct ArtistSearchResponse {
pub artists: ItemSearchResult<Box<Artist>>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct ItemSearchResult<T> {
pub items: Option<Vec<T>>,
pub total: Option<i32>,
pub limit: Option<i32>,
pub offset: Option<i32>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct PlaylistSearchResponse {
pub playlists: ItemSearchResult<Box<Playlist>>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct SearchResult {
pub albums: Option<ItemSearchResult<Box<Album>>>,
pub artists: Option<ItemSearchResult<Box<Artist>>>,
pub tracks: Option<ItemSearchResult<Box<Track>>>,
pub playlists: Option<ItemSearchResult<Box<Playlist>>>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct TrackSearchResponse {
pub tracks: ItemSearchResult<Box<Track>>,
}
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct UserFavorites {
pub albums: Option<ItemSearchResult<Box<Album>>>,
pub artists: Option<ItemSearchResult<Box<Artist>>>,
pub tracks: Option<ItemSearchResult<Box<Track>>>,
pub article_ids: Option<Vec<i32>>,
pub artist_ids: Option<Vec<i32>>,
pub album_ids: Option<Vec<i32>>,
pub track_ids: Option<Vec<i32>>,
}