use axum::Router;
use std::sync::Arc;
use super::{
attribute_handler::create_attribute_routes,
attribute_value_handler::create_attribute_value_routes,
brand_handler::create_brand_routes,
item_handler::create_item_routes,
item_group_handler::create_item_group_routes,
item_variant_handler::create_item_variant_routes,
uom_handler::create_uom_routes,
uom_conversion_handler::create_uom_conversion_routes,
};
use crate::application::service::{
AttributeService,
AttributeValueService,
BrandService,
ItemService,
ItemGroupService,
ItemVariantService,
UomService,
UomConversionService,
};
pub struct HttpServices {
pub attribute: Arc<AttributeService>,
pub attribute_value: Arc<AttributeValueService>,
pub brand: Arc<BrandService>,
pub item: Arc<ItemService>,
pub item_group: Arc<ItemGroupService>,
pub item_variant: Arc<ItemVariantService>,
pub uom: Arc<UomService>,
pub uom_conversion: Arc<UomConversionService>,
}
pub fn configure_routes(services: HttpServices) -> Router {
Router::new()
.merge(create_attribute_routes(services.attribute))
.merge(create_attribute_value_routes(services.attribute_value))
.merge(create_brand_routes(services.brand))
.merge(create_item_routes(services.item))
.merge(create_item_group_routes(services.item_group))
.merge(create_item_variant_routes(services.item_variant))
.merge(create_uom_routes(services.uom))
.merge(create_uom_conversion_routes(services.uom_conversion))
}
pub mod individual {
use super::*;
pub fn attribute_routes(service: Arc<AttributeService>) -> Router {
create_attribute_routes(service)
}
pub fn attribute_value_routes(service: Arc<AttributeValueService>) -> Router {
create_attribute_value_routes(service)
}
pub fn brand_routes(service: Arc<BrandService>) -> Router {
create_brand_routes(service)
}
pub fn item_routes(service: Arc<ItemService>) -> Router {
create_item_routes(service)
}
pub fn item_group_routes(service: Arc<ItemGroupService>) -> Router {
create_item_group_routes(service)
}
pub fn item_variant_routes(service: Arc<ItemVariantService>) -> Router {
create_item_variant_routes(service)
}
pub fn uom_routes(service: Arc<UomService>) -> Router {
create_uom_routes(service)
}
pub fn uom_conversion_routes(service: Arc<UomConversionService>) -> Router {
create_uom_conversion_routes(service)
}
}