use axum::Router;
impl crate::MaintenanceModule {
pub fn read_only_routes(&self) -> Router {
use crate::presentation::http::{
create_maintenance_request_read_routes, create_maintenance_schedule_routes,
create_maintenance_stage_routes, create_maintenance_visit_part_read_routes,
create_maintenance_visit_read_routes,
};
Router::new()
.merge(create_maintenance_schedule_routes(
self.maintenance_schedule_service.clone(),
))
.merge(create_maintenance_stage_routes(
self.maintenance_stage_service.clone(),
))
.merge(create_maintenance_request_read_routes(
self.maintenance_request_service.clone(),
))
.merge(create_maintenance_visit_read_routes(
self.maintenance_visit_service.clone(),
))
.merge(create_maintenance_visit_part_read_routes(
self.maintenance_visit_part_service.clone(),
))
}
pub fn query_service(&self) -> std::sync::Arc<dyn crate::exports::MaintenanceQueryService> {
self.query.clone()
}
pub fn lifecycle_routes(&self) -> Router {
use crate::presentation::http::{
create_maintenance_lifecycle_routes, create_maintenance_request_lifecycle_routes,
MaintenanceLifecycleState, MaintenanceRequestLifecycleState,
};
let gl = self.gl_sink.clone().expect(
"MaintenanceModule::lifecycle_routes() requires a GlPostSink — pass one via \
MaintenanceModuleBuilder::with_gl_sink(...)",
);
let inventory = self.inventory_port.clone().expect(
"MaintenanceModule::lifecycle_routes() requires an InventoryPort — pass one via \
MaintenanceModuleBuilder::with_inventory_port(...)",
);
create_maintenance_lifecycle_routes(MaintenanceLifecycleState {
write_svc: self.write_svc.clone(),
inventory,
gl,
event_sink: self.event_sink.clone(),
})
.merge(create_maintenance_request_lifecycle_routes(
MaintenanceRequestLifecycleState {
write_svc: self.request_write_svc.clone(),
event_sink: self.event_sink.clone(),
},
))
}
}