use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use uuid::Uuid; #[derive(Debug, Serialize, utoipa::ToSchema)] pub struct PlaylistResponse { pub id: String, pub owner_id: String, pub name: String, pub description: Option, pub is_public: bool, pub is_smart: bool, pub filter_query: Option, pub created_at: DateTime, pub updated_at: DateTime, } impl From for PlaylistResponse { fn from(p: pinakes_core::playlists::Playlist) -> Self { Self { id: p.id.to_string(), owner_id: p.owner_id.0.to_string(), name: p.name, description: p.description, is_public: p.is_public, is_smart: p.is_smart, filter_query: p.filter_query, created_at: p.created_at, updated_at: p.updated_at, } } } #[derive(Debug, Deserialize, utoipa::ToSchema)] pub struct CreatePlaylistRequest { pub name: String, pub description: Option, pub is_public: Option, pub is_smart: Option, pub filter_query: Option, } #[derive(Debug, Deserialize, utoipa::ToSchema)] pub struct UpdatePlaylistRequest { pub name: Option, pub description: Option, pub is_public: Option, } #[derive(Debug, Deserialize, utoipa::ToSchema)] pub struct PlaylistItemRequest { pub media_id: Uuid, pub position: Option, } #[derive(Debug, Deserialize, utoipa::ToSchema)] pub struct ReorderPlaylistRequest { pub media_id: Uuid, pub new_position: i32, }