first process

main
Mathias Rothenhaeusler 2023-04-13 21:20:35 +02:00
parent 9f2def2892
commit 20c183b163
5 changed files with 38 additions and 22 deletions

1
Cargo.lock generated
View File

@ -1238,6 +1238,7 @@ dependencies = [
"clap",
"directories",
"dotenv",
"log",
"mysql",
"sprintf",
]

View File

@ -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"

View File

@ -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<String>,
#[arg(short = 't', long = "target")]
pub target: Option<String>,
#[command(subcommand)]
pub mode: Commands,
}
#[derive(Subcommand)]
pub enum Commands {
Merch {
#[arg(short = 's', long = "search")]
search: Option<String>,
},
}

View File

@ -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<String>,
}
fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
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(())
}

View File

@ -7,10 +7,14 @@ pub fn find_by_name_or_id(
conn: &mut PooledConn,
) -> Result<Vec<Merchant>, 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 },
)
}