rcc/src/cli/controller.rs

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(())
}