added job service
parent
0278baf597
commit
d8d482c497
|
@ -36,5 +36,8 @@ pub enum Commands {
|
||||||
Page {
|
Page {
|
||||||
// #[arg(short, long)]
|
// #[arg(short, long)]
|
||||||
page_id: usize
|
page_id: usize
|
||||||
|
},
|
||||||
|
Job {
|
||||||
|
job_id: usize
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
use mysql::PooledConn;
|
use mysql::PooledConn;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
repository::{filter_repo::FilterRepo, merchant_repo::MerchantRepo, schema_repo::SchemaRepo, file_repo::FileRepo},
|
repository::{filter_repo::FilterRepo, merchant_repo::MerchantRepo, schema_repo::SchemaRepo, file_repo::FileRepo, job_repo::JobRepo},
|
||||||
service::{
|
service::{
|
||||||
filter_service::FilterService, merchant_service::MerchantService,
|
filter_service::FilterService, merchant_service::MerchantService,
|
||||||
schema_service::SchemaService, file_service::FileService,
|
schema_service::SchemaService, file_service::FileService, job_service::JobService,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -27,3 +27,8 @@ pub fn get_page_service(pool: &mut PooledConn) -> FileService {
|
||||||
let repo = FileRepo::new(pool);
|
let repo = FileRepo::new(pool);
|
||||||
return FileService::new(repo);
|
return FileService::new(repo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn get_job_service(pool: &mut PooledConn) -> JobService {
|
||||||
|
let repo = JobRepo::new(pool);
|
||||||
|
return JobService::new(repo);
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
#[derive(Debug, PartialEq, Eq)]
|
||||||
|
pub struct Job {
|
||||||
|
pub file_name: String,
|
||||||
|
pub description: String,
|
||||||
|
}
|
|
@ -4,3 +4,4 @@ pub mod filter;
|
||||||
pub mod filter_log;
|
pub mod filter_log;
|
||||||
pub mod filter_config;
|
pub mod filter_config;
|
||||||
pub mod file;
|
pub mod file;
|
||||||
|
pub mod job;
|
||||||
|
|
|
@ -3,7 +3,8 @@ use cli::command::{Cli, Commands};
|
||||||
use database::db::Db;
|
use database::db::Db;
|
||||||
use mysql::PooledConn;
|
use mysql::PooledConn;
|
||||||
use service::{
|
use service::{
|
||||||
filter_service::FilterService, merchant_service::MerchantService, schema_service::SchemaService, file_service::FileService,
|
file_service::FileService, filter_service::FilterService, job_service::JobService,
|
||||||
|
merchant_service::MerchantService, schema_service::SchemaService,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub mod cli;
|
pub mod cli;
|
||||||
|
@ -25,7 +26,7 @@ fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
|
||||||
merchant_service.get_merchant(&search.unwrap());
|
merchant_service.get_merchant(&search.unwrap());
|
||||||
}
|
}
|
||||||
Commands::Schema { search } => {
|
Commands::Schema { search } => {
|
||||||
let schema_service: SchemaService = container::get_schema_service(&mut conn);
|
let mut schema_service: SchemaService = container::get_schema_service(&mut conn);
|
||||||
schema_service.get_columns(&search.unwrap())
|
schema_service.get_columns(&search.unwrap())
|
||||||
}
|
}
|
||||||
Commands::Filter {
|
Commands::Filter {
|
||||||
|
@ -47,6 +48,10 @@ fn main() -> std::result::Result<(), Box<dyn std::error::Error>> {
|
||||||
let file_service: FileService = container::get_page_service(&mut conn);
|
let file_service: FileService = container::get_page_service(&mut conn);
|
||||||
file_service.get_page(&page_id);
|
file_service.get_page(&page_id);
|
||||||
}
|
}
|
||||||
|
Commands::Job { job_id } => {
|
||||||
|
let mut job_service: JobService = container::get_job_service(&mut conn);
|
||||||
|
job_service.get_job_by_id(&job_id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
use mysql::{params, prelude::Queryable, PooledConn};
|
||||||
|
|
||||||
|
use crate::entity::job::Job;
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct JobRepo<'a> {
|
||||||
|
db_pool: &'a mut PooledConn,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> JobRepo<'a> {
|
||||||
|
pub fn new(db_pool: &'a mut PooledConn) -> Self {
|
||||||
|
Self { db_pool }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn find_by_id(&mut self, job_id: &usize) -> Result<Vec<Job>, mysql::Error> {
|
||||||
|
let stat = self
|
||||||
|
.db_pool
|
||||||
|
.prep(
|
||||||
|
"SELECT
|
||||||
|
jm.file_name, jm.description
|
||||||
|
FROM jobs j
|
||||||
|
JOIN global_data.job_modules jm ON jm.job_module_id = j.job_module_id
|
||||||
|
WHERE
|
||||||
|
j.job_id = :job_id
|
||||||
|
",
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
self.db_pool.exec_map(
|
||||||
|
stat,
|
||||||
|
params! {"job_id" => job_id},
|
||||||
|
|(file_name, description)| Job {
|
||||||
|
file_name,
|
||||||
|
description,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,3 +2,4 @@ pub mod merchant_repo;
|
||||||
pub mod schema_repo;
|
pub mod schema_repo;
|
||||||
pub mod filter_repo;
|
pub mod filter_repo;
|
||||||
pub mod file_repo;
|
pub mod file_repo;
|
||||||
|
pub mod job_repo;
|
||||||
|
|
|
@ -12,7 +12,7 @@ impl<'a> SchemaRepo<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn find_by_column(
|
pub fn find_by_column(
|
||||||
self,
|
&mut self,
|
||||||
column_name: &str,
|
column_name: &str,
|
||||||
) -> Result<Vec<Schema>, mysql::Error> {
|
) -> Result<Vec<Schema>, mysql::Error> {
|
||||||
let stat = self.db_pool
|
let stat = self.db_pool
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
use crate::{repository::job_repo::JobRepo, entity::job::Job};
|
||||||
|
|
||||||
|
pub struct JobService<'a> {
|
||||||
|
pub repo: JobRepo<'a>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> JobService<'a> {
|
||||||
|
pub fn new(repo: JobRepo<'a>) -> Self {
|
||||||
|
Self { repo }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_job_by_id(&mut self, job_id: &usize) {
|
||||||
|
let result = self.repo.find_by_id(job_id);
|
||||||
|
|
||||||
|
match result {
|
||||||
|
Ok(job) => {
|
||||||
|
if job.is_empty() {
|
||||||
|
println!("Job not found!");
|
||||||
|
} else {
|
||||||
|
job.into_iter().for_each(|job: Job| {
|
||||||
|
println!("{}", "-".repeat(150));
|
||||||
|
println!("FileName: {}", job.file_name);
|
||||||
|
println!("Description: {}", job.description);
|
||||||
|
});
|
||||||
|
|
||||||
|
println!("{}", "-".repeat(150));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
Err(err) => panic!("{}", err),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,3 +2,4 @@ pub mod merchant_service;
|
||||||
pub mod schema_service;
|
pub mod schema_service;
|
||||||
pub mod filter_service;
|
pub mod filter_service;
|
||||||
pub mod file_service;
|
pub mod file_service;
|
||||||
|
pub mod job_service;
|
||||||
|
|
|
@ -8,7 +8,7 @@ impl<'a> SchemaService<'a> {
|
||||||
pub fn new(repo: SchemaRepo<'a>) -> Self {
|
pub fn new(repo: SchemaRepo<'a>) -> Self {
|
||||||
Self { repo }
|
Self { repo }
|
||||||
}
|
}
|
||||||
pub fn get_columns(self, column: &str) {
|
pub fn get_columns(&mut self, column: &str) {
|
||||||
let columns = self.repo.find_by_column(column);
|
let columns = self.repo.find_by_column(column);
|
||||||
|
|
||||||
match columns {
|
match columns {
|
||||||
|
|
Loading…
Reference in New Issue