diff --git a/src/main.rs b/src/main.rs index 6973198..dc240dc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -35,7 +35,9 @@ fn main() { // TODO: CREATE FILE.db IF DOES NOT EXISTS // TODO: CREATE TABLE IF DOES NOT EXISTS let connection = Connection::open(&config.database_path).unwrap(); - let word_source = FileDatabase {}; + let word_source = FileDatabase { + connection: &connection, + }; // NOTE: testing init // connection @@ -73,7 +75,7 @@ fn main() { ) .unwrap(); - if let Ok(w_list) = word_source.find_by_word("test", &connection) { + if let Ok(w_list) = word_source.find_by_word("test") { println!("Words! {:?}", w_list); } diff --git a/src/modules/source/mod.rs b/src/modules/source/mod.rs index 11e7943..a3436d0 100644 --- a/src/modules/source/mod.rs +++ b/src/modules/source/mod.rs @@ -3,10 +3,12 @@ use rusqlite::Connection; #[derive(Clone, Debug)] pub struct Word(String, String); -pub struct FileDatabase {} +pub struct FileDatabase<'a> { + pub connection: &'a Connection, +} pub trait WordSource { - fn find_by_word(&self, word: &str, connection: &Connection) -> Result, ()>; + fn find_by_word(&self, word: &str) -> Result, ()>; fn insert_word(&mut self, word: Word) -> Result<(), ()>; fn remove_word(&self, word: &str) -> Result<(), ()>; fn edit_word(&mut self, word: Word) -> Result<(), ()>; @@ -20,9 +22,9 @@ fn fuzzy_compare(a: &str, b: &str) -> bool { false } -impl WordSource for FileDatabase { - fn find_by_word(&self, word: &str, connection: &Connection) -> Result, ()> { - let statement = connection.prepare("select key, description from word"); +impl<'a> WordSource for FileDatabase<'a> { + fn find_by_word(&self, word: &str) -> Result, ()> { + let statement = self.connection.prepare("select key, description from word"); let mut word_list: Vec = vec![]; if let Ok(mut query) = statement {