use mineral_config_macros::config_section;
use serde::Deserialize;
use std::path::PathBuf;
use mineral_model::BitRate;
#[config_section]
pub struct DownloadConfig {
quality: BitRate,
dir: Option<PathBuf>,
#[serde(deserialize_with = "deserialize_positive_usize")]
max_concurrent: usize,
tagging: bool,
tagging_workers: usize,
}
fn deserialize_positive_usize<'de, D>(deserializer: D) -> std::result::Result<usize, D::Error>
where
D: serde::Deserializer<'de>,
{
let value = usize::deserialize(deserializer)?;
if value == 0 {
Err(serde::de::Error::custom("must be at least 1"))
} else {
Ok(value)
}
}