spotify_cli/domain/
search.rs

1use serde::{Deserialize, Serialize};
2
3/// Search result kinds supported by Spotify search.
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
5pub enum SearchType {
6    All,
7    Track,
8    Album,
9    Artist,
10    Playlist,
11}
12
13/// Normalized search item across Spotify result types.
14#[derive(Debug, Clone, Serialize, Deserialize)]
15pub struct SearchItem {
16    pub id: String,
17    pub name: String,
18    pub uri: String,
19    /// Item kind for mixed searches.
20    pub kind: SearchType,
21    /// Artist names for track/album results.
22    pub artists: Vec<String>,
23    /// Album name for track results.
24    pub album: Option<String>,
25    /// Track duration in milliseconds for track results.
26    pub duration_ms: Option<u32>,
27    /// Owner display name for playlist results.
28    pub owner: Option<String>,
29    /// Optional fuzzy score, 0.0..=1.0.
30    pub score: Option<f32>,
31}
32
33/// Aggregated search results with a kind discriminator.
34#[derive(Debug, Clone, Serialize, Deserialize)]
35pub struct SearchResults {
36    pub kind: SearchType,
37    pub items: Vec<SearchItem>,
38}