A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita
audio
rust
zig
deno
mpris
rockbox
mpd
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}