1
use serde::{Deserialize, Serialize};
2

            
3
use crate::{
4
    commands::{CommandResponse, ResponseParserError, single_item_command_request},
5
    response_tokenizer::ResponseAttributes,
6
    types::{DbSongInfo, Priority, SongId, SongPosition},
7
};
8

            
9
single_item_command_request!(PlaylistId, "playlistid", SongId);
10

            
11
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
12
pub struct PlaylistIdResponse(Vec<PlaylistIdResponseEntry>);
13

            
14
impl PlaylistIdResponse {
15
    pub fn new(items: Vec<PlaylistIdResponseEntry>) -> Self {
16
        PlaylistIdResponse(items)
17
    }
18
}
19

            
20
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
21
pub struct PlaylistIdResponseEntry {
22
    pub position: SongPosition,
23
    pub id: SongId,
24
    pub priority: Option<Priority>,
25
    pub song_info: DbSongInfo,
26
}
27

            
28
impl PlaylistIdResponseEntry {
29
    pub fn new(
30
        position: SongPosition,
31
        id: SongId,
32
        priority: Option<Priority>,
33
        song_info: DbSongInfo,
34
    ) -> Self {
35
        PlaylistIdResponseEntry {
36
            position,
37
            id,
38
            priority,
39
            song_info,
40
        }
41
    }
42
}
43

            
44
impl CommandResponse for PlaylistIdResponse {
45
    type Request = PlaylistIdRequest;
46

            
47
    fn parse(_parts: ResponseAttributes<'_>) -> Result<Self, ResponseParserError> {
48
        unimplemented!()
49
    }
50

            
51
    fn serialize(&self) -> Vec<u8> {
52
        unimplemented!("response serialization is not yet implemented for PlaylistIdResponse")
53
    }
54
}