diff --git a/src/repository/filter_repo.rs b/src/repository/filter_repo.rs index 4261a58..406d877 100644 --- a/src/repository/filter_repo.rs +++ b/src/repository/filter_repo.rs @@ -2,8 +2,21 @@ use mysql::{params, prelude::Queryable, PooledConn}; use crate::entity::{filter::Filter, filter_config::FilterConfig}; -pub fn find_by_id(filter_id: &usize, conn: &mut PooledConn) -> Result, mysql::Error> { - let stat = conn +#[derive(Debug)] +pub struct FilterRepo<'a> { + db_pool: &'a mut PooledConn, +} + +impl<'a> FilterRepo<'a> { + pub fn new(db_pool: &'a mut PooledConn) -> Self { + Self { db_pool } + } + + pub fn find_by_id( + self, + filter_id: &usize, + ) -> Result, mysql::Error> { + let stat = self.db_pool .prep( "SELECT f.filter_module_id, f.file_name, f.description, fm.filter_module_no, fm.filter_user FROM filter f @@ -12,24 +25,24 @@ pub fn find_by_id(filter_id: &usize, conn: &mut PooledConn) -> Result 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, - }, - ) -} + self.db_pool.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, + }, + ) + } -pub fn find_filter_configs( - filter_id: &usize, - conn: &mut PooledConn, -) -> Result, mysql::Error> { - let stat = conn + pub fn find_filter_configs( + self, + filter_id: &usize, + ) -> Result, mysql::Error> { + let stat = self.db_pool .prep( " SELECT t1.attribute, t1.value1, IF(t1.value2 is null or t1.value2 = '', 'EMPTY', t1.value2) as value2, t2.name, t1.upd_ts @@ -40,17 +53,16 @@ pub fn find_filter_configs( ) .unwrap(); - conn.exec_map( - stat, - params! {"filter_id" => filter_id}, - |(attribute, value1, value2, name, upd_ts)| { - FilterConfig { + self.db_pool.exec_map( + stat, + params! {"filter_id" => filter_id}, + |(attribute, value1, value2, name, upd_ts)| FilterConfig { attribute, value1, value2, name, upd_ts, - } - }, - ) + }, + ) + } } diff --git a/src/service/filter_service.rs b/src/service/filter_service.rs index 8b9c774..f991f7f 100644 --- a/src/service/filter_service.rs +++ b/src/service/filter_service.rs @@ -1,11 +1,12 @@ -use mysql::PooledConn; use crate::{ entity::{filter::Filter, filter_config::FilterConfig}, - repository::filter_repo, + repository::filter_repo::FilterRepo, }; +use mysql::PooledConn; pub fn get_filter(filter_id: &usize, all: bool, conn: &mut PooledConn) { - let result = filter_repo::find_by_id(filter_id, conn); + let repo: FilterRepo = FilterRepo::new(conn); + let result = repo.find_by_id(filter_id); match result { Ok(filters) => { @@ -22,7 +23,7 @@ pub fn get_filter(filter_id: &usize, all: bool, conn: &mut PooledConn) { }); if all { - get_filter_configs(&*filter_id, conn) + get_filter_configs(filter_id, conn) } else { println!("{}", "-".repeat(150)); } @@ -33,7 +34,8 @@ pub fn get_filter(filter_id: &usize, all: bool, conn: &mut PooledConn) { } pub fn get_filter_configs(filter_id: &usize, conn: &mut PooledConn) { - let result = filter_repo::find_filter_configs(filter_id, conn); + let repo: FilterRepo = FilterRepo::new(conn); + let result = repo.find_filter_configs(filter_id); match result { Ok(filter_configs) => {