use crate::application::dto::{PriorityDto, SessionIdDto, StreamIdDto};
use crate::domain::{aggregates::stream_session::SessionConfig, entities::stream::StreamConfig};
use serde::{Deserialize, Serialize};
use serde_json::Value as JsonValue;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateSessionCommand {
pub config: SessionConfig,
pub client_info: Option<String>,
pub user_agent: Option<String>,
pub ip_address: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CreateStreamCommand {
pub session_id: SessionIdDto,
pub source_data: JsonValue,
pub config: Option<StreamConfig>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StartStreamCommand {
pub session_id: SessionIdDto,
pub stream_id: StreamIdDto,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GenerateFramesCommand {
pub session_id: SessionIdDto,
pub stream_id: StreamIdDto,
pub priority_threshold: PriorityDto,
pub max_frames: usize,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompleteStreamCommand {
pub session_id: SessionIdDto,
pub stream_id: StreamIdDto,
pub checksum: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CloseSessionCommand {
pub session_id: SessionIdDto,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BatchGenerateFramesCommand {
pub session_id: SessionIdDto,
pub priority_threshold: PriorityDto,
pub max_frames: usize,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AdjustPriorityThresholdCommand {
pub session_id: SessionIdDto,
pub new_threshold: PriorityDto,
pub reason: String,
}