diff --git a/Cargo.lock b/Cargo.lock index 4394ccc..baabbdd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1238,6 +1238,7 @@ dependencies = [ "clap", "directories", "dotenv", + "log", "mysql", "sprintf", ] diff --git a/Cargo.toml b/Cargo.toml index 1c90a5e..1a266e2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,5 +9,6 @@ edition = "2021" clap = { version = "4.2.1", features = ["derive"] } directories = "5.0.0" dotenv = "0.15.0" +log = "0.4.17" mysql = "23.0.1" sprintf = "0.1.3" diff --git a/src/cli/cli.rs b/src/cli/cli.rs index 9504195..d00a773 100644 --- a/src/cli/cli.rs +++ b/src/cli/cli.rs @@ -1,4 +1,4 @@ -use clap::Parser; +use clap::{Parser, Subcommand}; #[derive(Parser)] #[command(name = "RCC")] @@ -6,9 +6,18 @@ use clap::Parser; #[command(version = "1.0")] #[command(about = "Tool collection for work at RCC.", long_about = None)] pub struct Cli { - #[arg(short, long)] - env: String, - #[arg(short, long)] - one: String, + #[arg(short = 'e', long = "env")] + pub env: Option, + #[arg(short = 't', long = "target")] + pub target: Option, + #[command(subcommand)] + pub mode: Commands, } +#[derive(Subcommand)] +pub enum Commands { + Merch { + #[arg(short = 's', long = "search")] + search: Option, + }, +} diff --git a/src/main.rs b/src/main.rs index 3b2e786..dc0afb3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,27 +1,28 @@ +use clap::Parser; +use cli::cli::{Cli, Commands}; use database::database::Db; use mysql::PooledConn; use repository::merchant_repo; +pub mod cli; pub mod database; pub mod entity; pub mod repository; -pub mod cli; - -#[derive(Debug, PartialEq, Eq)] -struct Payment { - customer_id: i32, - amount: i32, - account_name: Option, -} fn main() -> std::result::Result<(), Box> { + let args = Cli::parse(); let db = Db::initialize(); - let mut conn: PooledConn = db.get_connection(); - let selected_payments = merchant_repo::find_by_name_or_id("1", &mut conn); - selected_payments.into_iter().for_each(|payment| { - println!("{:?}", payment); - }); + + match args.mode { + Commands::Merch { search } => { + let selected_payments = merchant_repo::find_by_name_or_id(&search.unwrap(), &mut conn); + + selected_payments.into_iter().for_each(|payment| { + println!("{:?}", payment); + }); + } + } Ok(()) } diff --git a/src/repository/merchant_repo.rs b/src/repository/merchant_repo.rs index 2890121..9d32643 100644 --- a/src/repository/merchant_repo.rs +++ b/src/repository/merchant_repo.rs @@ -7,10 +7,14 @@ pub fn find_by_name_or_id( conn: &mut PooledConn, ) -> Result, mysql::Error> { let stat = conn - .prep("SELECT m_name, m_id FROM global_data.merchant WHERE m_id = :search OR m_name LIKE :search;") + .prep("SELECT m_name, m_id FROM global_data.merchant WHERE m_id = :search OR m_name LIKE :search2;") .unwrap(); - conn.exec_map(stat, params! {"search" => search}, |(m_name, m_id)| { - Merchant { m_name, m_id } - }) + let search_like = format!("%{}%", search); + + conn.exec_map( + stat, + params! {"search" => search, "search2" => search_like}, + |(m_name, m_id)| Merchant { m_name, m_id }, + ) }