music_player_graphql/schema/objects/
folder.rs

1use async_graphql::*;
2use music_player_entity::folder::Model;
3
4use super::playlist::Playlist;
5
6#[derive(Default, Clone)]
7pub struct Folder {
8    pub id: ID,
9    pub name: String,
10    pub playlists: Vec<Playlist>,
11}
12
13#[Object]
14impl Folder {
15    async fn id(&self) -> &str {
16        &self.id
17    }
18
19    async fn name(&self) -> &str {
20        &self.name
21    }
22
23    async fn playlists(&self) -> Vec<Playlist> {
24        self.playlists.clone()
25    }
26}
27
28impl From<Model> for Folder {
29    fn from(model: Model) -> Self {
30        Self {
31            id: ID(model.id),
32            name: model.name,
33            playlists: model.playlists.into_iter().map(Playlist::from).collect(),
34        }
35    }
36}