backbone-support 0.12.0

Customer support: issues tracked against service level agreements, and warranty claims
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::{
    issue_handler::create_issue_routes,
    service_level_agreement_handler::create_service_level_agreement_routes,
    service_level_priority_handler::create_service_level_priority_routes,
    warranty_claim_handler::create_warranty_claim_routes,
};

use crate::application::service::{
    IssueService,
    ServiceLevelAgreementService,
    ServiceLevelPriorityService,
    WarrantyClaimService,
};

/// Services collection for all CRUD endpoints
pub struct HttpServices {
    pub issue: Arc<IssueService>,
    pub service_level_agreement: Arc<ServiceLevelAgreementService>,
    pub service_level_priority: Arc<ServiceLevelPriorityService>,
    pub warranty_claim: Arc<WarrantyClaimService>,
}

/// 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()
        // Issue routes (12 Backbone endpoints)
        .merge(create_issue_routes(services.issue))
        // ServiceLevelAgreement routes (12 Backbone endpoints)
        .merge(create_service_level_agreement_routes(services.service_level_agreement))
        // ServiceLevelPriority routes (12 Backbone endpoints)
        .merge(create_service_level_priority_routes(services.service_level_priority))
        // WarrantyClaim routes (12 Backbone endpoints)
        .merge(create_warranty_claim_routes(services.warranty_claim))
}

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

    pub fn issue_routes(service: Arc<IssueService>) -> Router {
        create_issue_routes(service)
    }

    pub fn service_level_agreement_routes(service: Arc<ServiceLevelAgreementService>) -> Router {
        create_service_level_agreement_routes(service)
    }

    pub fn service_level_priority_routes(service: Arc<ServiceLevelPriorityService>) -> Router {
        create_service_level_priority_routes(service)
    }

    pub fn warranty_claim_routes(service: Arc<WarrantyClaimService>) -> Router {
        create_warranty_claim_routes(service)
    }

}