From 81cb7a750ce6ea02d083b7daba77755e61abced1 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Sat, 18 Jan 2025 15:23:03 -0700 Subject: [PATCH] refactor: Removed unnecessary clones in the networking module to speed up network request handling --- src/network/radarr_network.rs | 32 ++++++++++++++++++-------------- src/network/sonarr_network.rs | 30 +++++++++++++++++------------- 2 files changed, 35 insertions(+), 27 deletions(-) diff --git a/src/network/radarr_network.rs b/src/network/radarr_network.rs index 0b71ae8..6dcaaf0 100644 --- a/src/network/radarr_network.rs +++ b/src/network/radarr_network.rs @@ -281,7 +281,7 @@ impl<'a, 'b> Network<'a, 'b> { async fn add_movie(&mut self, mut add_movie_body: AddMovieBody) -> Result { info!("Adding new movie to Radarr"); - let event = RadarrEvent::AddMovie(add_movie_body.clone()); + let event = RadarrEvent::AddMovie(AddMovieBody::default()); if let Some(tag_input_str) = add_movie_body.tag_input_string.as_ref() { let tag_ids_vec = self.extract_and_add_radarr_tag_ids_vec(tag_input_str).await; add_movie_body.tags = tag_ids_vec; @@ -303,7 +303,7 @@ impl<'a, 'b> Network<'a, 'b> { add_root_folder_body: AddRootFolderBody, ) -> Result { info!("Adding new root folder to Radarr"); - let event = RadarrEvent::AddRootFolder(add_root_folder_body.clone()); + let event = RadarrEvent::AddRootFolder(AddRootFolderBody::default()); debug!("Add root folder body: {add_root_folder_body:?}"); @@ -452,7 +452,7 @@ impl<'a, 'b> Network<'a, 'b> { } async fn delete_movie(&mut self, delete_movie_params: DeleteMovieParams) -> Result<()> { - let event = RadarrEvent::DeleteMovie(delete_movie_params.clone()); + let event = RadarrEvent::DeleteMovie(DeleteMovieParams::default()); let DeleteMovieParams { id, delete_movie_files, @@ -497,7 +497,7 @@ impl<'a, 'b> Network<'a, 'b> { } async fn download_radarr_release(&mut self, params: RadarrReleaseDownloadBody) -> Result { - let event = RadarrEvent::DownloadRelease(params.clone()); + let event = RadarrEvent::DownloadRelease(RadarrReleaseDownloadBody::default()); info!("Downloading Radarr release with params: {params:?}"); let request_props = self @@ -511,7 +511,7 @@ impl<'a, 'b> Network<'a, 'b> { async fn edit_all_radarr_indexer_settings(&mut self, params: IndexerSettings) -> Result { info!("Updating Radarr indexer settings"); - let event = RadarrEvent::EditAllIndexerSettings(params.clone()); + let event = RadarrEvent::EditAllIndexerSettings(IndexerSettings::default()); debug!("Indexer settings body: {params:?}"); @@ -527,7 +527,7 @@ impl<'a, 'b> Network<'a, 'b> { async fn edit_collection(&mut self, edit_collection_params: EditCollectionParams) -> Result<()> { info!("Editing Radarr collection"); let detail_event = RadarrEvent::GetCollections; - let event = RadarrEvent::EditCollection(edit_collection_params.clone()); + let event = RadarrEvent::EditCollection(EditCollectionParams::default()); info!("Fetching collection details"); let collection_id = edit_collection_params.collection_id; @@ -625,7 +625,7 @@ impl<'a, 'b> Network<'a, 'b> { mut edit_indexer_params: EditIndexerParams, ) -> Result<()> { let detail_event = RadarrEvent::GetIndexers; - let event = RadarrEvent::EditIndexer(edit_indexer_params.clone()); + let event = RadarrEvent::EditIndexer(EditIndexerParams::default()); let id = edit_indexer_params.indexer_id; if let Some(tag_input_str) = edit_indexer_params.tag_input_string.as_ref() { let tag_ids_vec = self.extract_and_add_radarr_tag_ids_vec(tag_input_str).await; @@ -827,7 +827,7 @@ impl<'a, 'b> Network<'a, 'b> { info!("Editing Radarr movie"); let movie_id = edit_movie_params.movie_id; let detail_event = RadarrEvent::GetMovieDetails(movie_id); - let event = RadarrEvent::EditMovie(edit_movie_params.clone()); + let event = RadarrEvent::EditMovie(EditMovieParams::default()); if let Some(tag_input_str) = edit_movie_params.tag_input_string.as_ref() { let tag_ids_vec = self.extract_and_add_radarr_tag_ids_vec(tag_input_str).await; edit_movie_params.tags = Some(tag_ids_vec); @@ -1597,7 +1597,7 @@ impl<'a, 'b> Network<'a, 'b> { async fn search_movie(&mut self, query: String) -> Result> { info!("Searching for specific Radarr movie"); - let event = RadarrEvent::SearchNewMovie(query.clone()); + let event = RadarrEvent::SearchNewMovie(String::new()); let request_props = self .request_props_from( @@ -1822,11 +1822,15 @@ impl<'a, 'b> Network<'a, 'b> { } async fn extract_and_add_radarr_tag_ids_vec(&mut self, edit_tags: &str) -> Vec { - let tags_map = self.app.lock().await.data.radarr_data.tags_map.clone(); - let missing_tags_vec = edit_tags - .split(',') - .filter(|&tag| !tag.is_empty() && tags_map.get_by_right(tag.to_lowercase().trim()).is_none()) - .collect::>(); + let missing_tags_vec = { + let tags_map = &self.app.lock().await.data.radarr_data.tags_map; + edit_tags + .split(',') + .filter(|&tag| { + !tag.is_empty() && tags_map.get_by_right(tag.to_lowercase().trim()).is_none() + }) + .collect::>() + }; for tag in missing_tags_vec { self diff --git a/src/network/sonarr_network.rs b/src/network/sonarr_network.rs index 713bca4..ee625ff 100644 --- a/src/network/sonarr_network.rs +++ b/src/network/sonarr_network.rs @@ -361,7 +361,7 @@ impl<'a, 'b> Network<'a, 'b> { add_root_folder_body: AddRootFolderBody, ) -> Result { info!("Adding new root folder to Sonarr"); - let event = SonarrEvent::AddRootFolder(add_root_folder_body.clone()); + let event = SonarrEvent::AddRootFolder(AddRootFolderBody::default()); debug!("Add root folder body: {add_root_folder_body:?}"); @@ -382,7 +382,7 @@ impl<'a, 'b> Network<'a, 'b> { async fn add_sonarr_series(&mut self, mut add_series_body: AddSeriesBody) -> Result { info!("Adding new series to Sonarr"); - let event = SonarrEvent::AddSeries(add_series_body.clone()); + let event = SonarrEvent::AddSeries(AddSeriesBody::default()); if let Some(tag_input_str) = add_series_body.tag_input_string.as_ref() { let tag_ids_vec = self.extract_and_add_sonarr_tag_ids_vec(tag_input_str).await; add_series_body.tags = tag_ids_vec; @@ -553,7 +553,7 @@ impl<'a, 'b> Network<'a, 'b> { } async fn delete_series(&mut self, delete_series_params: DeleteSeriesParams) -> Result<()> { - let event = SonarrEvent::DeleteSeries(delete_series_params.clone()); + let event = SonarrEvent::DeleteSeries(DeleteSeriesParams::default()); let DeleteSeriesParams { id, delete_series_files, @@ -602,7 +602,7 @@ impl<'a, 'b> Network<'a, 'b> { &mut self, sonarr_release_download_body: SonarrReleaseDownloadBody, ) -> Result { - let event = SonarrEvent::DownloadRelease(sonarr_release_download_body.clone()); + let event = SonarrEvent::DownloadRelease(SonarrReleaseDownloadBody::default()); info!("Downloading Sonarr release with params: {sonarr_release_download_body:?}"); let request_props = self @@ -622,7 +622,7 @@ impl<'a, 'b> Network<'a, 'b> { async fn edit_all_sonarr_indexer_settings(&mut self, params: IndexerSettings) -> Result { info!("Updating Sonarr indexer settings"); - let event = SonarrEvent::EditAllIndexerSettings(params.clone()); + let event = SonarrEvent::EditAllIndexerSettings(IndexerSettings::default()); debug!("Indexer settings body: {params:?}"); let request_props = self @@ -643,7 +643,7 @@ impl<'a, 'b> Network<'a, 'b> { edit_indexer_params.tags = Some(tag_ids_vec); } let detail_event = SonarrEvent::GetIndexers; - let event = SonarrEvent::EditIndexer(edit_indexer_params.clone()); + let event = SonarrEvent::EditIndexer(EditIndexerParams::default()); let id = edit_indexer_params.indexer_id; info!("Updating Sonarr indexer with ID: {id}"); info!("Fetching indexer details for indexer with ID: {id}"); @@ -844,7 +844,7 @@ impl<'a, 'b> Network<'a, 'b> { } let series_id = edit_series_params.series_id; let detail_event = SonarrEvent::GetSeriesDetails(series_id); - let event = SonarrEvent::EditSeries(edit_series_params.clone()); + let event = SonarrEvent::EditSeries(EditSeriesParams::default()); info!("Fetching series details for series with ID: {series_id}"); let request_props = self @@ -1986,7 +1986,7 @@ impl<'a, 'b> Network<'a, 'b> { async fn search_sonarr_series(&mut self, query: String) -> Result> { info!("Searching for specific Sonarr series"); - let event = SonarrEvent::SearchNewSeries(query.clone()); + let event = SonarrEvent::SearchNewSeries(String::new()); let request_props = self .request_props_from( @@ -2286,11 +2286,15 @@ impl<'a, 'b> Network<'a, 'b> { } async fn extract_and_add_sonarr_tag_ids_vec(&mut self, edit_tags: &str) -> Vec { - let tags_map = self.app.lock().await.data.sonarr_data.tags_map.clone(); - let missing_tags_vec = edit_tags - .split(',') - .filter(|&tag| !tag.is_empty() && tags_map.get_by_right(tag.to_lowercase().trim()).is_none()) - .collect::>(); + let missing_tags_vec = { + let tags_map = &self.app.lock().await.data.sonarr_data.tags_map; + edit_tags + .split(',') + .filter(|&tag| { + !tag.is_empty() && tags_map.get_by_right(tag.to_lowercase().trim()).is_none() + }) + .collect::>() + }; for tag in missing_tags_vec { self