use serde::{Deserialize, Serialize};
use uuid::Uuid;
use chrono::{DateTime, Utc};

/// Playlist information
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Playlist {
    pub id: Uuid,
    pub name: String,
    pub description: Option<String>,
    pub is_public: bool,
    pub is_collaborative: bool,
    pub owner_id: Uuid,
    pub tracks: Vec<PlaylistTrack>,
    pub followers_count: u32,
    pub created_at: DateTime<Utc>,
    pub updated_at: DateTime<Utc>,
}

/// Playlist track information
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PlaylistTrack {
    pub track_id: Uuid,
    pub position: u32,
    pub added_by: Uuid,
    pub added_at: DateTime<Utc>,
}
