backbone-maintenance 0.7.21

Minimal Backbone Framework module skeleton
Documentation
//! HTTP route configuration
//!
//! Generated by metaphor-schema. Do not edit manually.
//!
//! This module provides consolidated Axum route configuration using backbone-core's
//! BackboneCrudHandler for all 12 standard Backbone CRUD endpoints per entity.

use axum::Router;
use std::sync::Arc;

use super::{
    maintenance_request_handler::create_maintenance_request_read_routes,
    maintenance_schedule_handler::create_maintenance_schedule_routes,
    maintenance_stage_handler::create_maintenance_stage_routes,
    maintenance_visit_handler::create_maintenance_visit_routes,
    maintenance_visit_part_handler::create_maintenance_visit_part_routes,
};

use crate::application::service::{
    MaintenanceRequestService,
    MaintenanceScheduleService,
    MaintenanceStageService,
    MaintenanceVisitService,
    MaintenanceVisitPartService,
};

/// Services collection for all CRUD endpoints
pub struct HttpServices {
    pub maintenance_request: Arc<MaintenanceRequestService>,
    pub maintenance_schedule: Arc<MaintenanceScheduleService>,
    pub maintenance_stage: Arc<MaintenanceStageService>,
    pub maintenance_visit: Arc<MaintenanceVisitService>,
    pub maintenance_visit_part: Arc<MaintenanceVisitPartService>,
}

/// Configure all HTTP routes for this module using Axum and BackboneCrudHandler.
///
/// Each entity gets 12 standard Backbone CRUD endpoints:
/// 1. GET /api/v1/{collection} - List with pagination
/// 2. POST /api/v1/{collection} - Create
/// 3. GET /api/v1/{collection}/:id - Get by ID
/// 4. PUT /api/v1/{collection}/:id - Full update
/// 5. PATCH /api/v1/{collection}/:id - Partial update
/// 6. DELETE /api/v1/{collection}/:id - Soft delete
/// 7. POST /api/v1/{collection}/bulk - Bulk create
/// 8. POST /api/v1/{collection}/upsert - Upsert
/// 9. GET /api/v1/{collection}/trash - List deleted
/// 10. POST /api/v1/{collection}/:id/restore - Restore
/// 11. DELETE /api/v1/{collection}/empty - Empty trash
/// 12. GET /api/v1/{collection}/:id/deleted - Get deleted by ID
pub fn configure_routes(services: HttpServices) -> Router {
    Router::new()
        // MaintenanceRequest routes (READ-ONLY mount — hand_set lifecycle; the state field moves only through the module's validated verbs)
        .merge(create_maintenance_request_read_routes(services.maintenance_request))
        // MaintenanceSchedule routes (12 Backbone endpoints)
        .merge(create_maintenance_schedule_routes(services.maintenance_schedule))
        // MaintenanceStage routes (12 Backbone endpoints)
        .merge(create_maintenance_stage_routes(services.maintenance_stage))
        // MaintenanceVisit routes (12 Backbone endpoints)
        .merge(create_maintenance_visit_routes(services.maintenance_visit))
        // MaintenanceVisitPart routes (12 Backbone endpoints)
        .merge(create_maintenance_visit_part_routes(services.maintenance_visit_part))
}

/// Create an individual entity's routes (for modular configuration)
pub mod individual {
    use super::*;

    pub fn maintenance_request_routes(service: Arc<MaintenanceRequestService>) -> Router {
        create_maintenance_request_read_routes(service)
    }

    pub fn maintenance_schedule_routes(service: Arc<MaintenanceScheduleService>) -> Router {
        create_maintenance_schedule_routes(service)
    }

    pub fn maintenance_stage_routes(service: Arc<MaintenanceStageService>) -> Router {
        create_maintenance_stage_routes(service)
    }

    pub fn maintenance_visit_routes(service: Arc<MaintenanceVisitService>) -> Router {
        create_maintenance_visit_routes(service)
    }

    pub fn maintenance_visit_part_routes(service: Arc<MaintenanceVisitPartService>) -> Router {
        create_maintenance_visit_part_routes(service)
    }

}