diff --git a/scryfall_deser/src/db.rs b/scryfall_deser/src/db.rs index db0cc54..9acb958 100644 --- a/scryfall_deser/src/db.rs +++ b/scryfall_deser/src/db.rs @@ -152,7 +152,7 @@ pub fn get_card_by_name(name: &str, name_type: GetNameType) -> Option { } } -pub fn find_matching_cards_seperate_words(search_strings: &Vec) -> Vec { +pub fn find_matching_cards_scryfall_style(search_strings: &Vec) -> Vec { assert!(!search_strings.is_empty()); let sqlite_file = get_local_data_sqlite_file(); let conn = rusqlite::Connection::open(sqlite_file).unwrap(); diff --git a/scryfall_deser/src/lib.rs b/scryfall_deser/src/lib.rs index 9f5c9da..2ea44e9 100644 --- a/scryfall_deser/src/lib.rs +++ b/scryfall_deser/src/lib.rs @@ -6,7 +6,7 @@ pub use crate::deser::ScryfallCard; mod db; pub use db::{ - find_matching_cards, find_matching_cards_seperate_words, get_all_card_names, + find_matching_cards, find_matching_cards_scryfall_style, get_all_card_names, get_all_lowercase_card_names, get_card_by_name, init_db, update_db_with_file, GetNameType, }; diff --git a/scryfall_deser/src/main.rs b/scryfall_deser/src/main.rs index 5b5d8b5..1e6e3be 100644 --- a/scryfall_deser/src/main.rs +++ b/scryfall_deser/src/main.rs @@ -1,6 +1,5 @@ use clap::Parser; -use scryfall_deser::find_matching_cards; -use scryfall_deser::find_matching_cards_seperate_words; +use scryfall_deser::find_matching_cards_scryfall_style; use scryfall_deser::get_card_by_name; use scryfall_deser::get_local_cache_folder; use scryfall_deser::init_db; @@ -55,6 +54,17 @@ fn exact_search(search_strings: Vec) -> MtgCardExit { } } +// For use with find_matching_cards +fn _combine_search_strings(search_strings: Vec) -> String { + let mut search_string = String::new(); + for card in search_strings { + search_string.push_str(&card.to_lowercase()); + search_string.push_str(" "); + } + search_string.pop(); + search_string +} + fn main() -> MtgCardExit { let args = Args::parse(); if args.update { @@ -75,18 +85,7 @@ fn main() -> MtgCardExit { return res; } - // TODO consider scryfall-like search where I think they do something like: - // SELECT... WHERE name LIKE "" AND name LIKE ""... - /* - let mut search_string = String::new(); - for card in args.search_text { - search_string.push_str(&card.to_lowercase()); - search_string.push_str(" "); - } - search_string.pop(); - let matching_cards = find_matching_cards(&search_string); - */ - let matching_cards = find_matching_cards_seperate_words(&args.search_text); + let matching_cards = find_matching_cards_scryfall_style(&args.search_text); if matching_cards.is_empty() { // Do some distance checking stuff