Lidarr support #1

Merged
Dark-Alex-17 merged 61 commits from lidarr into main 2026-01-21 21:30:47 +00:00
6 changed files with 58 additions and 37 deletions
Showing only changes of commit ca208ff5e4 - Show all commits
+15 -8
View File
@@ -11,6 +11,7 @@ use crate::models::{
use crate::network::lidarr_network::LidarrEvent; use crate::network::lidarr_network::LidarrEvent;
use bimap::BiMap; use bimap::BiMap;
use chrono::{DateTime, Utc}; use chrono::{DateTime, Utc};
use itertools::Itertools;
use strum::EnumIter; use strum::EnumIter;
#[cfg(test)] #[cfg(test)]
use { use {
@@ -68,17 +69,23 @@ impl LidarrData<'_> {
} }
pub fn sorted_quality_profile_names(&self) -> Vec<String> { pub fn sorted_quality_profile_names(&self) -> Vec<String> {
let mut quality_profile_names: Vec<String> = self
self.quality_profile_map.right_values().cloned().collect(); .quality_profile_map
quality_profile_names.sort(); .iter()
quality_profile_names .sorted_by_key(|(id, _)| *id)
.map(|(_, name)| name)
.cloned()
.collect()
} }
pub fn sorted_metadata_profile_names(&self) -> Vec<String> { pub fn sorted_metadata_profile_names(&self) -> Vec<String> {
let mut metadata_profile_names: Vec<String> = self
self.metadata_profile_map.right_values().cloned().collect(); .metadata_profile_map
metadata_profile_names.sort(); .iter()
metadata_profile_names .sorted_by_key(|(id, _)| *id)
.map(|(_, name)| name)
.cloned()
.collect()
} }
} }
@@ -64,17 +64,17 @@ mod tests {
#[test] #[test]
fn test_sorted_quality_profile_names() { fn test_sorted_quality_profile_names() {
let mut quality_profile_map = BiMap::new(); let mut quality_profile_map = BiMap::new();
quality_profile_map.insert(3, "test 3".to_owned()); quality_profile_map.insert(3, "test 1".to_owned());
quality_profile_map.insert(2, "test 2".to_owned()); quality_profile_map.insert(2, "test 2".to_owned());
quality_profile_map.insert(1, "test 1".to_owned()); quality_profile_map.insert(1, "test 3".to_owned());
let lidarr_data = LidarrData { let lidarr_data = LidarrData {
quality_profile_map, quality_profile_map,
..LidarrData::default() ..LidarrData::default()
}; };
let expected_quality_profile_vec = vec![ let expected_quality_profile_vec = vec![
"test 1".to_owned(),
"test 2".to_owned(),
"test 3".to_owned(), "test 3".to_owned(),
"test 2".to_owned(),
"test 1".to_owned(),
]; ];
assert_iter_eq!( assert_iter_eq!(
@@ -86,17 +86,17 @@ mod tests {
#[test] #[test]
fn test_sorted_metadata_profile_names() { fn test_sorted_metadata_profile_names() {
let mut metadata_profile_map = BiMap::new(); let mut metadata_profile_map = BiMap::new();
metadata_profile_map.insert(3, "test 3".to_owned()); metadata_profile_map.insert(3, "test 1".to_owned());
metadata_profile_map.insert(2, "test 2".to_owned()); metadata_profile_map.insert(2, "test 2".to_owned());
metadata_profile_map.insert(1, "test 1".to_owned()); metadata_profile_map.insert(1, "test 3".to_owned());
let lidarr_data = LidarrData { let lidarr_data = LidarrData {
metadata_profile_map, metadata_profile_map,
..LidarrData::default() ..LidarrData::default()
}; };
let expected_metadata_profile_vec = vec![ let expected_metadata_profile_vec = vec![
"test 1".to_owned(),
"test 2".to_owned(),
"test 3".to_owned(), "test 3".to_owned(),
"test 2".to_owned(),
"test 1".to_owned(),
]; ];
assert_iter_eq!( assert_iter_eq!(
@@ -23,6 +23,7 @@ use crate::models::{
use crate::network::radarr_network::RadarrEvent; use crate::network::radarr_network::RadarrEvent;
use bimap::BiMap; use bimap::BiMap;
use chrono::{DateTime, Utc}; use chrono::{DateTime, Utc};
use itertools::Itertools;
use serde_json::Number; use serde_json::Number;
use strum::EnumIter; use strum::EnumIter;
#[cfg(test)] #[cfg(test)]
@@ -112,9 +113,13 @@ impl RadarrData<'_> {
} }
pub fn sorted_quality_profile_names(&self) -> Vec<String> { pub fn sorted_quality_profile_names(&self) -> Vec<String> {
let mut names: Vec<String> = self.quality_profile_map.right_values().cloned().collect(); self
names.sort(); .quality_profile_map
names .iter()
.sorted_by_key(|(id, _)| *id)
.map(|(_, name)| name)
.cloned()
.collect()
} }
} }
@@ -82,17 +82,17 @@ mod tests {
#[test] #[test]
fn test_sorted_quality_profile_names() { fn test_sorted_quality_profile_names() {
let mut quality_profile_map = BiMap::new(); let mut quality_profile_map = BiMap::new();
quality_profile_map.insert(3, "test 3".to_owned()); quality_profile_map.insert(3, "test 1".to_owned());
quality_profile_map.insert(2, "test 2".to_owned()); quality_profile_map.insert(2, "test 2".to_owned());
quality_profile_map.insert(1, "test 1".to_owned()); quality_profile_map.insert(1, "test 3".to_owned());
let radarr_data = RadarrData { let radarr_data = RadarrData {
quality_profile_map, quality_profile_map,
..RadarrData::default() ..RadarrData::default()
}; };
let expected_quality_profile_vec = vec![ let expected_quality_profile_vec = vec![
"test 1".to_owned(),
"test 2".to_owned(),
"test 3".to_owned(), "test 3".to_owned(),
"test 2".to_owned(),
"test 1".to_owned(),
]; ];
assert_iter_eq!( assert_iter_eq!(
+15 -6
View File
@@ -25,6 +25,7 @@ use crate::{
}; };
use bimap::BiMap; use bimap::BiMap;
use chrono::{DateTime, Utc}; use chrono::{DateTime, Utc};
use itertools::Itertools;
use serde_json::Number; use serde_json::Number;
use strum::EnumIter; use strum::EnumIter;
#[cfg(test)] #[cfg(test)]
@@ -119,15 +120,23 @@ impl SonarrData<'_> {
} }
pub fn sorted_quality_profile_names(&self) -> Vec<String> { pub fn sorted_quality_profile_names(&self) -> Vec<String> {
let mut names: Vec<String> = self.quality_profile_map.right_values().cloned().collect(); self
names.sort(); .quality_profile_map
names .iter()
.sorted_by_key(|(id, _)| *id)
.map(|(_, name)| name)
.cloned()
.collect()
} }
pub fn sorted_language_profile_names(&self) -> Vec<String> { pub fn sorted_language_profile_names(&self) -> Vec<String> {
let mut names: Vec<String> = self.language_profiles_map.right_values().cloned().collect(); self
names.sort(); .language_profiles_map
names .iter()
.sorted_by_key(|(id, _)| *id)
.map(|(_, name)| name)
.cloned()
.collect()
} }
} }
@@ -98,17 +98,17 @@ mod tests {
#[test] #[test]
fn test_sorted_quality_profile_names() { fn test_sorted_quality_profile_names() {
let mut quality_profile_map = BiMap::new(); let mut quality_profile_map = BiMap::new();
quality_profile_map.insert(3, "test 3".to_owned()); quality_profile_map.insert(3, "test 1".to_owned());
quality_profile_map.insert(2, "test 2".to_owned()); quality_profile_map.insert(2, "test 2".to_owned());
quality_profile_map.insert(1, "test 1".to_owned()); quality_profile_map.insert(1, "test 3".to_owned());
let sonarr_data = SonarrData { let sonarr_data = SonarrData {
quality_profile_map, quality_profile_map,
..SonarrData::default() ..SonarrData::default()
}; };
let expected_quality_profile_vec = vec![ let expected_quality_profile_vec = vec![
"test 1".to_owned(),
"test 2".to_owned(),
"test 3".to_owned(), "test 3".to_owned(),
"test 2".to_owned(),
"test 1".to_owned(),
]; ];
assert_iter_eq!( assert_iter_eq!(
@@ -120,17 +120,17 @@ mod tests {
#[test] #[test]
fn test_sorted_language_profile_names() { fn test_sorted_language_profile_names() {
let mut language_profiles_map = BiMap::new(); let mut language_profiles_map = BiMap::new();
language_profiles_map.insert(3, "test 3".to_owned()); language_profiles_map.insert(3, "test 1".to_owned());
language_profiles_map.insert(2, "test 2".to_owned()); language_profiles_map.insert(2, "test 2".to_owned());
language_profiles_map.insert(1, "test 1".to_owned()); language_profiles_map.insert(1, "test 3".to_owned());
let sonarr_data = SonarrData { let sonarr_data = SonarrData {
language_profiles_map, language_profiles_map,
..SonarrData::default() ..SonarrData::default()
}; };
let expected_language_profiles_vec = vec![ let expected_language_profiles_vec = vec![
"test 1".to_owned(),
"test 2".to_owned(),
"test 3".to_owned(), "test 3".to_owned(),
"test 2".to_owned(),
"test 1".to_owned(),
]; ];
assert_iter_eq!( assert_iter_eq!(