added filter repo

main
Mathias Rothenhaeusler 2023-04-15 17:20:07 +02:00
parent 178ea238a3
commit 62db608ecb
9 changed files with 81 additions and 11 deletions

View File

@ -17,11 +17,14 @@ pub struct Cli {
#[derive(Subcommand)]
pub enum Commands {
Merch {
#[arg(short = 's', long = "search")]
// #[arg(short = 's', long = "search")]
search: Option<String>,
},
Schema {
#[arg(short = 's', long = "search")]
// #[arg(short = 's', long = "search")]
search: Option<String>,
},
Filter {
filter_id: usize
}
}

View File

@ -0,0 +1,8 @@
#[derive(Debug, PartialEq, Eq)]
pub struct Filter {
pub filter_module_id: usize,
pub file_name: String,
pub description: String,
pub filter_module_no: String,
pub filter_user: usize,
}

View File

@ -1,2 +1,3 @@
pub mod merchant;
pub mod schema;
pub mod filter;

View File

@ -2,7 +2,7 @@ use clap::Parser;
use cli::cli::{Cli, Commands};
use database::database::Db;
use mysql::PooledConn;
use service::{merchant_service, schema_service};
use service::{merchant_service, schema_service, filter_service};
pub mod cli;
pub mod database;
@ -22,6 +22,9 @@ fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
Commands::Schema { search } => {
schema_service::get_columns(&search.unwrap(), &mut conn)
},
Commands::Filter { filter_id } => {
filter_service::get_filter(&filter_id, &mut conn)
},
}
Ok(())

View File

@ -0,0 +1,26 @@
use mysql::{params, prelude::Queryable, PooledConn};
use crate::entity::filter::Filter;
pub fn find_by_id(filter_id: &usize, conn: &mut PooledConn) -> Result<Vec<Filter>, mysql::Error> {
let stat = conn
.prep(
"SELECT f.filter_module_id, f.file_name, f.description, fm.filter_module_no, fm.filter_user
FROM filter f
JOIN global_data.filter_modules fm ON fm.filter_module_id = f.filter_module_id
WHERE f.filter_id = :filter_id
")
.unwrap();
conn.exec_map(
stat,
params! {"filter_id" => filter_id},
|(filter_module_id, file_name, description, filter_module_no, filter_user)| Filter {
filter_module_id,
file_name,
description,
filter_module_no,
filter_user,
},
)
}

View File

@ -1,2 +1,3 @@
pub mod merchant_repo;
pub mod schema_repo;
pub mod filter_repo;

View File

@ -0,0 +1,26 @@
use mysql::PooledConn;
use crate::repository::filter_repo;
pub fn get_filter(filter_id: &usize, conn: &mut PooledConn) {
let result = filter_repo::find_by_id(filter_id, conn);
match result {
Ok(filters) => {
if filters.is_empty() {
println!("Filter not found!");
} else {
filters.into_iter().for_each(|filter| {
println!("{}", "-".repeat(100));
println!("Module ID: {}", filter.filter_module_id);
println!("FileName: {}", filter.file_name);
println!("Description: {}", filter.description);
println!("ModuleNo: {}", filter.filter_module_no);
println!("FilterUser: {}", filter.filter_user);
});
println!("{}", "-".repeat(100));
}
}
Err(err) => panic!("{}", err),
};
}

View File

@ -1,2 +1,3 @@
pub mod merchant_service;
pub mod schema_service;
pub mod filter_service;

View File

@ -2,7 +2,6 @@ use mysql::PooledConn;
use crate::repository::schema_repo;
pub fn get_columns(column: &str, conn: &mut PooledConn) {
let columns = schema_repo::find_by_column(column, conn);
@ -10,14 +9,16 @@ pub fn get_columns(column: &str, conn: &mut PooledConn) {
Ok(columns) => {
if columns.is_empty() {
println!("No column found!");
}
columns.into_iter().for_each(|column| {
} else {
columns.into_iter().for_each(|column| {
println!("{}", "-".repeat(100));
println!("Table name: {}", column.table_name);
println!("Column name: {}", column.column_name);
println!("Type: {}", column.column_type);
});
println!("{}", "-".repeat(100));
println!("Table name: {}", column.table_name);
println!("Column name: {}", column.column_name);
println!("Type: {}", column.column_type);
})
},
}
}
Err(err) => panic!("{err}"),
}
}