A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 48 lines 1.4 kB view raw
1use async_graphql::*; 2use serde::{Deserialize, Serialize}; 3 4use super::{album::Album, artist::Artist, track::Track}; 5 6#[derive(Default, Clone, Serialize, Deserialize)] 7pub struct SearchResults { 8 pub artists: Vec<Artist>, 9 pub albums: Vec<Album>, 10 pub tracks: Vec<Track>, 11 pub liked_tracks: Vec<Track>, 12 pub liked_albums: Vec<Album>, 13} 14 15#[Object] 16impl SearchResults { 17 async fn artists(&self) -> Vec<Artist> { 18 self.artists.clone() 19 } 20 21 async fn albums(&self) -> Vec<Album> { 22 self.albums.clone() 23 } 24 25 async fn tracks(&self) -> Vec<Track> { 26 self.tracks.clone() 27 } 28 29 async fn liked_tracks(&self) -> Vec<Track> { 30 self.liked_tracks.clone() 31 } 32 33 async fn liked_albums(&self) -> Vec<Album> { 34 self.liked_albums.clone() 35 } 36} 37 38impl From<rockbox_types::SearchResults> for SearchResults { 39 fn from(results: rockbox_types::SearchResults) -> Self { 40 SearchResults { 41 artists: results.artists.into_iter().map(Into::into).collect(), 42 albums: results.albums.into_iter().map(Into::into).collect(), 43 tracks: results.tracks.into_iter().map(Into::into).collect(), 44 liked_tracks: results.liked_tracks.into_iter().map(Into::into).collect(), 45 liked_albums: results.liked_albums.into_iter().map(Into::into).collect(), 46 } 47 } 48}