new struct for filter repo

main
Mathias Rothenhaeusler 2023-04-19 19:13:55 +02:00
parent 40c4757a07
commit e32e96cb38
2 changed files with 46 additions and 32 deletions

View File

@ -2,8 +2,21 @@ use mysql::{params, prelude::Queryable, PooledConn};
use crate::entity::{filter::Filter, filter_config::FilterConfig}; use crate::entity::{filter::Filter, filter_config::FilterConfig};
pub fn find_by_id(filter_id: &usize, conn: &mut PooledConn) -> Result<Vec<Filter>, mysql::Error> { #[derive(Debug)]
let stat = conn 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<Vec<Filter>, mysql::Error> {
let stat = self.db_pool
.prep( .prep(
"SELECT f.filter_module_id, f.file_name, f.description, fm.filter_module_no, fm.filter_user "SELECT f.filter_module_id, f.file_name, f.description, fm.filter_module_no, fm.filter_user
FROM filter f FROM filter f
@ -12,24 +25,24 @@ pub fn find_by_id(filter_id: &usize, conn: &mut PooledConn) -> Result<Vec<Filter
") ")
.unwrap(); .unwrap();
conn.exec_map( self.db_pool.exec_map(
stat, stat,
params! {"filter_id" => filter_id}, 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)| Filter {
filter_module_id, filter_module_id,
file_name, file_name,
description, description,
filter_module_no, filter_module_no,
filter_user, filter_user,
}, },
) )
} }
pub fn find_filter_configs( pub fn find_filter_configs(
filter_id: &usize, self,
conn: &mut PooledConn, filter_id: &usize,
) -> Result<Vec<FilterConfig>, mysql::Error> { ) -> Result<Vec<FilterConfig>, mysql::Error> {
let stat = conn let stat = self.db_pool
.prep( .prep(
" "
SELECT t1.attribute, t1.value1, IF(t1.value2 is null or t1.value2 = '', 'EMPTY', t1.value2) as value2, t2.name, t1.upd_ts 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(); .unwrap();
conn.exec_map( self.db_pool.exec_map(
stat, stat,
params! {"filter_id" => filter_id}, params! {"filter_id" => filter_id},
|(attribute, value1, value2, name, upd_ts)| { |(attribute, value1, value2, name, upd_ts)| FilterConfig {
FilterConfig {
attribute, attribute,
value1, value1,
value2, value2,
name, name,
upd_ts, upd_ts,
} },
}, )
) }
} }

View File

@ -1,11 +1,12 @@
use mysql::PooledConn;
use crate::{ use crate::{
entity::{filter::Filter, filter_config::FilterConfig}, 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) { 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 { match result {
Ok(filters) => { Ok(filters) => {
@ -22,7 +23,7 @@ pub fn get_filter(filter_id: &usize, all: bool, conn: &mut PooledConn) {
}); });
if all { if all {
get_filter_configs(&*filter_id, conn) get_filter_configs(filter_id, conn)
} else { } else {
println!("{}", "-".repeat(150)); 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) { 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 { match result {
Ok(filter_configs) => { Ok(filter_configs) => {