61 lines
1.9 KiB
Rust
61 lines
1.9 KiB
Rust
use crate::{
|
|
container,
|
|
database::db::Db,
|
|
service::{
|
|
file_service::FileService, filter_service::FilterService, job_service::JobService,
|
|
merchant_service::MerchantService, schema_service::SchemaService,
|
|
},
|
|
};
|
|
|
|
use super::command::{Cli, Commands};
|
|
|
|
use thiserror::Error;
|
|
|
|
#[derive(Debug, Error)]
|
|
enum CommandError {
|
|
#[error("Empty search provided.")]
|
|
EmptySearch(),
|
|
}
|
|
|
|
pub fn process_args(args: Cli, db: Db) -> Result<(), Box<dyn std::error::Error>> {
|
|
match args.mode {
|
|
Commands::Merch { search } => {
|
|
let mut merchant_service: MerchantService = container::get_merchant_service(db);
|
|
merchant_service.get_merchant(&search.ok_or(CommandError::EmptySearch())?)?;
|
|
}
|
|
Commands::Schema { search } => {
|
|
let mut schema_service: SchemaService = container::get_schema_service(db);
|
|
schema_service.get_columns(&search.ok_or(CommandError::EmptySearch())?)?;
|
|
}
|
|
Commands::Filter {
|
|
filter_id,
|
|
config,
|
|
all,
|
|
log,
|
|
} => {
|
|
let mut filter_service: FilterService = container::get_filter_service(db);
|
|
if config {
|
|
filter_service.get_filter_configs(&filter_id)?;
|
|
} else if log {
|
|
filter_service.get_filter_log(&filter_id, all)?;
|
|
} else {
|
|
filter_service.get_filter(&filter_id, all)?;
|
|
}
|
|
}
|
|
Commands::Page { page_id } => {
|
|
let mut file_service: FileService = container::get_page_service(db);
|
|
file_service.get_page(&page_id)?;
|
|
}
|
|
Commands::Job { job_id, log } => {
|
|
let mut job_service: JobService = container::get_job_service(db);
|
|
if log {
|
|
job_service.get_job_log(&job_id)?;
|
|
} else {
|
|
job_service.get_job_by_id(&job_id)?;
|
|
}
|
|
}
|
|
}
|
|
|
|
Ok(())
|
|
}
|