Expand description
§MoosicBox Session Models
Data models for session management, playback control, and connection handling.
§Overview
The MoosicBox Session Models package provides:
- Session Management: Playback session data structures
- Connection Models: Client connection and registration
- Playback Control: Session update and playlist management
- Player Registration: Audio player configuration and setup
- API Integration: REST-compatible session models
§Installation
Add this to your Cargo.toml:
[dependencies]
moosicbox_session_models = { path = "../session/models" }§Dependencies
- serde: Serialization and deserialization
moosicbox_audio_zone_models: Audio zone modelsmoosicbox_music_models: Music and track modelsmoosicbox_json_utils: JSON parsing utilitiesswitchy_database: Database value types and traitsstrum/strum_macros: Enum string conversions- log: Logging facade
- utoipa (optional):
OpenAPIschema generation
§Features
api(default): Enables API-facing models used across session endpoints.openapi(default): Enablesutoipa::ToSchemaderives forOpenAPIschema generation.fail-on-warnings: Treats warnings as errors for this crate and related model crates.aac,flac,mp3,opus: Propagates codec model support tomoosicbox_music_models.
§Usage
This crate is primarily type-driven. The main entry points are public request/response models and conversion types used by session APIs.
- Session lifecycle:
CreateSession,UpdateSession,DeleteSession,Session,ApiSession - Playlist updates:
CreateSessionPlaylist,UpdateSessionPlaylist,ApiUpdateSessionPlaylist,SessionPlaylist,ApiSessionPlaylist - Playback routing:
PlaybackTarget,ApiPlaybackTarget,SetSessionAudioZone - Connection registration:
RegisterConnection,Connection,ApiConnection,RegisterPlayer
use moosicbox_session_models::{
ApiPlaybackTarget, ApiUpdateSession, CreateSession, CreateSessionPlaylist, PlaybackTarget,
RegisterConnection, RegisterPlayer, UpdateSession,
};
let create = CreateSession {
name: "Living Room".to_string(),
audio_zone_id: Some(7),
playlist: CreateSessionPlaylist { tracks: vec![101, 202] },
};
let update = UpdateSession {
session_id: 42,
profile: "default".to_string(),
playback_target: PlaybackTarget::AudioZone { audio_zone_id: 7 },
play: Some(true),
..UpdateSession::default()
};
let api_update: ApiUpdateSession = update.into();
let _target = ApiPlaybackTarget::from(PlaybackTarget::ConnectionOutput {
connection_id: "desktop-client".to_string(),
output_id: "default".to_string(),
});
let _registration = RegisterConnection {
connection_id: "desktop-client".to_string(),
name: "Desktop".to_string(),
players: vec![RegisterPlayer {
audio_output_id: "default".to_string(),
name: "Main Output".to_string(),
}],
};
let _has_playback_changes = create.playlist.tracks.len() > 1 && api_update.play.is_some();§License
Licensed under MPL-2.0.
Data models for session lifecycle, playback control, and client connections.
Structs§
- ApiConnection
- API representation of a client connection.
- ApiSession
- API representation of a playback session.
- ApiSession
Playlist - API representation of a session’s playlist.
- ApiUpdate
Session - API request to update an existing playback session.
- ApiUpdate
Session Playlist - API representation of updated playlist data for a session.
- Connection
- A client connection.
- Create
Session - Request to create a new playback session.
- Create
Session Playlist - Playlist configuration for creating a session.
- Delete
Session - Request to delete a playback session.
- Register
Connection - Request to register a new connection.
- Register
Player - Player registration data.
- Session
- A playback session.
- Session
Playlist - A session’s playlist.
- Session
Playlist Tracks - Wrapper for session playlist tracks.
- SetSession
Audio Zone - Request to associate a session with an audio zone.
- Update
Session - Request to update an existing playback session.
- Update
Session Playlist - Updated playlist data for a session.
Enums§
- ApiPlayback
Target - API representation of playback target destination.
- Playback
Target - Target destination for playback output.