From 0bfa2c6089d545089591ef3f848cd5bb81f6363f Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Wed, 9 Oct 2024 14:47:07 -0500 Subject: [PATCH] moving to using a filter function for getting the item --- src/rust/core/images.rs | 8 ++++---- src/rust/core/lib.rs | 2 +- src/rust/core/model.rs | 7 +++++-- src/rust/core/presentations.rs | 2 +- src/rust/core/songs.rs | 9 ++------- src/rust/core/videos.rs | 6 +++--- 6 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/rust/core/images.rs b/src/rust/core/images.rs index bfe6d2d..b923f9d 100644 --- a/src/rust/core/images.rs +++ b/src/rust/core/images.rs @@ -45,8 +45,8 @@ mod test { pub fn test_db_and_model() { let mut image_model: Model = Model::default(); image_model.load_from_db(); - if let Some(image) = image_model.get_item(3) { - let test_image = test_image("ncca4".into()); + if let Some(image) = image_model.get_item(|i| i.id == 3) { + let test_image = test_image("nccq5".into()); assert_eq!(test_image.title, image.title); } else { assert!(false); @@ -61,10 +61,10 @@ mod test { let new_image = test_image("A newer image".into()); match result { Ok(_) => { - assert_eq!(&image, image_model.get_item(0).unwrap()); + assert_eq!(&image, image_model.get_item(|i| i.id == 0).unwrap()); assert_ne!( &new_image, - image_model.get_item(0).unwrap() + image_model.get_item(|i| i.id == 0).unwrap() ); } Err(e) => assert!( diff --git a/src/rust/core/lib.rs b/src/rust/core/lib.rs index bb3db24..ae8718c 100644 --- a/src/rust/core/lib.rs +++ b/src/rust/core/lib.rs @@ -6,4 +6,4 @@ pub mod service_items; pub mod slides; pub mod songs; pub mod videos; -pub mod file; +// pub mod file; diff --git a/src/rust/core/model.rs b/src/rust/core/model.rs index d29d55d..e155ef9 100644 --- a/src/rust/core/model.rs +++ b/src/rust/core/model.rs @@ -36,8 +36,11 @@ impl Model { Ok(()) } - pub fn get_item(&self, index: i32) -> Option<&T> { - self.items.get(index as usize) + pub fn get_item

(&self, f: P) -> Option<&T> + where + P: FnMut(&&T) -> bool, + { + self.items.iter().filter(f).next() } pub fn insert_item(&mut self, item: T, index: i32) -> Result<()> { diff --git a/src/rust/core/presentations.rs b/src/rust/core/presentations.rs index 7777ef5..dac0df8 100644 --- a/src/rust/core/presentations.rs +++ b/src/rust/core/presentations.rs @@ -88,7 +88,7 @@ mod test { let mut presentation_model: Model = Model::default(); presentation_model.load_from_db(); - if let Some(presentation) = presentation_model.get_item(10) { + if let Some(presentation) = presentation_model.get_item(|p| p.id == 10) { let test_presentation = test_presentation(); assert_eq!(&test_presentation, presentation); } else { diff --git a/src/rust/core/songs.rs b/src/rust/core/songs.rs index 7d20366..3f9ec68 100644 --- a/src/rust/core/songs.rs +++ b/src/rust/core/songs.rs @@ -112,11 +112,6 @@ impl Model { } }) } - - pub fn get_item(&self, index: i32) -> Option<&Song> { - self.items.iter().find(|s| s.id == index) - } - } impl Song { @@ -287,7 +282,7 @@ You saved my soul" pub fn test_db_and_model() { let mut song_model: Model = Model::default(); song_model.load_from_db(); - if let Some(song) = song_model.get_item(7) { + if let Some(song) = song_model.get_item(|s| s.id == 7) { let test_song = test_song(); assert_eq!(&test_song, song); } else { @@ -315,7 +310,7 @@ You saved my soul" match song_model.update_item(song, 2) { Ok(()) => assert_eq!( &cloned_song, - song_model.get_item(2).unwrap() + song_model.get_item(|s| s.id == 7).unwrap() ), Err(e) => assert!(false, "{e}"), } diff --git a/src/rust/core/videos.rs b/src/rust/core/videos.rs index 5f46222..a02d721 100644 --- a/src/rust/core/videos.rs +++ b/src/rust/core/videos.rs @@ -48,7 +48,7 @@ mod test { pub fn test_db_and_model() { let mut video_model: Model