use axum::Router;
use std::sync::Arc;
use super::{
compensation_change_handler::create_compensation_change_read_routes,
payroll_entry_handler::create_payroll_entry_routes,
salary_slip_handler::create_salary_slip_routes,
salary_slip_line_handler::create_salary_slip_line_routes,
salary_structure_handler::create_salary_structure_routes,
salary_component_handler::create_salary_component_routes,
};
use crate::application::service::{
CompensationChangeService,
PayrollEntryService,
SalarySlipService,
SalarySlipLineService,
SalaryStructureService,
SalaryComponentService,
};
pub struct HttpServices {
pub compensation_change: Arc<CompensationChangeService>,
pub payroll_entry: Arc<PayrollEntryService>,
pub salary_slip: Arc<SalarySlipService>,
pub salary_slip_line: Arc<SalarySlipLineService>,
pub salary_structure: Arc<SalaryStructureService>,
pub salary_component: Arc<SalaryComponentService>,
}
pub fn configure_routes(services: HttpServices) -> Router {
Router::new()
.merge(create_compensation_change_read_routes(services.compensation_change))
.merge(create_payroll_entry_routes(services.payroll_entry))
.merge(create_salary_slip_routes(services.salary_slip))
.merge(create_salary_slip_line_routes(services.salary_slip_line))
.merge(create_salary_structure_routes(services.salary_structure))
.merge(create_salary_component_routes(services.salary_component))
}
pub mod individual {
use super::*;
pub fn compensation_change_routes(service: Arc<CompensationChangeService>) -> Router {
create_compensation_change_read_routes(service)
}
pub fn payroll_entry_routes(service: Arc<PayrollEntryService>) -> Router {
create_payroll_entry_routes(service)
}
pub fn salary_slip_routes(service: Arc<SalarySlipService>) -> Router {
create_salary_slip_routes(service)
}
pub fn salary_slip_line_routes(service: Arc<SalarySlipLineService>) -> Router {
create_salary_slip_line_routes(service)
}
pub fn salary_structure_routes(service: Arc<SalaryStructureService>) -> Router {
create_salary_structure_routes(service)
}
pub fn salary_component_routes(service: Arc<SalaryComponentService>) -> Router {
create_salary_component_routes(service)
}
}