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", "clap",
"directories", "directories",
"dotenv", "dotenv",
"log",
"mysql", "mysql",
"sprintf", "sprintf",
] ]

View File

@ -9,5 +9,6 @@ edition = "2021"
clap = { version = "4.2.1", features = ["derive"] } clap = { version = "4.2.1", features = ["derive"] }
directories = "5.0.0" directories = "5.0.0"
dotenv = "0.15.0" dotenv = "0.15.0"
log = "0.4.17"
mysql = "23.0.1" mysql = "23.0.1"
sprintf = "0.1.3" sprintf = "0.1.3"

View File

@ -1,4 +1,4 @@
use clap::Parser; use clap::{Parser, Subcommand};
#[derive(Parser)] #[derive(Parser)]
#[command(name = "RCC")] #[command(name = "RCC")]
@ -6,9 +6,18 @@ use clap::Parser;
#[command(version = "1.0")] #[command(version = "1.0")]
#[command(about = "Tool collection for work at RCC.", long_about = None)] #[command(about = "Tool collection for work at RCC.", long_about = None)]
pub struct Cli { pub struct Cli {
#[arg(short, long)] #[arg(short = 'e', long = "env")]
env: String, pub env: Option<String>,
#[arg(short, long)] #[arg(short = 't', long = "target")]
one: String, 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 database::database::Db;
use mysql::PooledConn; use mysql::PooledConn;
use repository::merchant_repo; use repository::merchant_repo;
pub mod cli;
pub mod database; pub mod database;
pub mod entity; pub mod entity;
pub mod repository; 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>> { fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
let args = Cli::parse();
let db = Db::initialize(); let db = Db::initialize();
let mut conn: PooledConn = db.get_connection(); 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| { match args.mode {
println!("{:?}", payment); 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(()) Ok(())
} }

View File

@ -7,10 +7,14 @@ pub fn find_by_name_or_id(
conn: &mut PooledConn, conn: &mut PooledConn,
) -> Result<Vec<Merchant>, mysql::Error> { ) -> Result<Vec<Merchant>, mysql::Error> {
let stat = conn 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(); .unwrap();
conn.exec_map(stat, params! {"search" => search}, |(m_name, m_id)| { let search_like = format!("%{}%", search);
Merchant { m_name, m_id }
}) conn.exec_map(
stat,
params! {"search" => search, "search2" => search_like},
|(m_name, m_id)| Merchant { m_name, m_id },
)
} }