Skip to main content

Crate moosicbox_session_models

Crate moosicbox_session_models 

Source
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 models
  • moosicbox_music_models: Music and track models
  • moosicbox_json_utils: JSON parsing utilities
  • switchy_database: Database value types and traits
  • strum/strum_macros: Enum string conversions
  • log: Logging facade
  • utoipa (optional): OpenAPI schema generation

§Features

  • api (default): Enables API-facing models used across session endpoints.
  • openapi (default): Enables utoipa::ToSchema derives for OpenAPI schema generation.
  • fail-on-warnings: Treats warnings as errors for this crate and related model crates.
  • aac, flac, mp3, opus: Propagates codec model support to moosicbox_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.
ApiSessionPlaylist
API representation of a session’s playlist.
ApiUpdateSession
API request to update an existing playback session.
ApiUpdateSessionPlaylist
API representation of updated playlist data for a session.
Connection
A client connection.
CreateSession
Request to create a new playback session.
CreateSessionPlaylist
Playlist configuration for creating a session.
DeleteSession
Request to delete a playback session.
RegisterConnection
Request to register a new connection.
RegisterPlayer
Player registration data.
Session
A playback session.
SessionPlaylist
A session’s playlist.
SessionPlaylistTracks
Wrapper for session playlist tracks.
SetSessionAudioZone
Request to associate a session with an audio zone.
UpdateSession
Request to update an existing playback session.
UpdateSessionPlaylist
Updated playlist data for a session.

Enums§

ApiPlaybackTarget
API representation of playback target destination.
PlaybackTarget
Target destination for playback output.