backbone-mail 0.2.32

Odoo mail core port — message/notification/followers/activity/alias/sms queue (schema: messaging)
//! 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::{
    mail_activity_handler::create_mail_activity_routes,
    mail_activity_type_handler::create_mail_activity_type_read_routes,
    mail_activity_plan_handler::create_mail_activity_plan_routes,
    mail_activity_plan_template_handler::create_mail_activity_plan_template_routes,
    mail_alias_domain_handler::create_mail_alias_domain_routes,
    mail_alias_handler::create_mail_alias_routes,
    mail_attachment_handler::create_mail_attachment_routes,
    mail_message_attachment_handler::create_mail_message_attachment_routes,
    mail_message_star_handler::create_mail_message_star_routes,
    mail_message_handler::create_mail_message_read_routes,
    mail_handler::create_mail_read_routes,
    mail_notification_handler::create_mail_notification_read_routes,
    mail_message_subtype_handler::create_mail_message_subtype_routes,
    mail_message_reaction_handler::create_mail_message_reaction_routes,
    mail_followers_handler::create_mail_followers_routes,
    mail_presence_handler::create_mail_presence_read_routes,
    mail_blacklist_handler::create_mail_blacklist_routes,
    mail_tracking_value_handler::create_mail_tracking_value_routes,
    discuss_channel_handler::create_discuss_channel_read_routes,
    discuss_channel_member_handler::create_discuss_channel_member_routes,
    mail_guest_handler::create_mail_guest_routes,
    mail_server_handler::create_mail_server_routes,
    fetchmail_server_handler::create_fetchmail_server_read_routes,
    mail_gateway_allowed_handler::create_mail_gateway_allowed_routes,
    phone_blacklist_handler::create_phone_blacklist_routes,
    mail_message_schedule_handler::create_mail_message_schedule_routes,
    mail_scheduled_message_handler::create_mail_scheduled_message_routes,
    sms_handler::create_sms_read_routes,
    sms_template_handler::create_sms_template_routes,
    sms_tracker_handler::create_sms_tracker_read_routes,
};

use crate::application::service::{
    MailActivityService,
    MailActivityTypeService,
    MailActivityPlanService,
    MailActivityPlanTemplateService,
    MailAliasDomainService,
    MailAliasService,
    MailAttachmentService,
    MailMessageAttachmentService,
    MailMessageStarService,
    MailMessageService,
    MailService,
    MailNotificationService,
    MailMessageSubtypeService,
    MailMessageReactionService,
    MailFollowersService,
    MailPresenceService,
    MailBlacklistService,
    MailTrackingValueService,
    DiscussChannelService,
    DiscussChannelMemberService,
    MailGuestService,
    MailServerService,
    FetchmailServerService,
    MailGatewayAllowedService,
    PhoneBlacklistService,
    MailMessageScheduleService,
    MailScheduledMessageService,
    SmsService,
    SmsTemplateService,
    SmsTrackerService,
};

/// Services collection for all CRUD endpoints
pub struct HttpServices {
    pub mail_activity: Arc<MailActivityService>,
    pub mail_activity_type: Arc<MailActivityTypeService>,
    pub mail_activity_plan: Arc<MailActivityPlanService>,
    pub mail_activity_plan_template: Arc<MailActivityPlanTemplateService>,
    pub mail_alias_domain: Arc<MailAliasDomainService>,
    pub mail_alias: Arc<MailAliasService>,
    pub mail_attachment: Arc<MailAttachmentService>,
    pub mail_message_attachment: Arc<MailMessageAttachmentService>,
    pub mail_message_star: Arc<MailMessageStarService>,
    pub mail_message: Arc<MailMessageService>,
    pub mail: Arc<MailService>,
    pub mail_notification: Arc<MailNotificationService>,
    pub mail_message_subtype: Arc<MailMessageSubtypeService>,
    pub mail_message_reaction: Arc<MailMessageReactionService>,
    pub mail_followers: Arc<MailFollowersService>,
    pub mail_presence: Arc<MailPresenceService>,
    pub mail_blacklist: Arc<MailBlacklistService>,
    pub mail_tracking_value: Arc<MailTrackingValueService>,
    pub discuss_channel: Arc<DiscussChannelService>,
    pub discuss_channel_member: Arc<DiscussChannelMemberService>,
    pub mail_guest: Arc<MailGuestService>,
    pub mail_server: Arc<MailServerService>,
    pub fetchmail_server: Arc<FetchmailServerService>,
    pub mail_gateway_allowed: Arc<MailGatewayAllowedService>,
    pub phone_blacklist: Arc<PhoneBlacklistService>,
    pub mail_message_schedule: Arc<MailMessageScheduleService>,
    pub mail_scheduled_message: Arc<MailScheduledMessageService>,
    pub sms: Arc<SmsService>,
    pub sms_template: Arc<SmsTemplateService>,
    pub sms_tracker: Arc<SmsTrackerService>,
}

/// 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()
        // MailActivity routes (12 Backbone endpoints)
        .merge(create_mail_activity_routes(services.mail_activity))
        // MailActivityType routes (READ-ONLY mount — hand_set lifecycle; the state field moves only through the module's validated verbs)
        .merge(create_mail_activity_type_read_routes(services.mail_activity_type))
        // MailActivityPlan routes (12 Backbone endpoints)
        .merge(create_mail_activity_plan_routes(services.mail_activity_plan))
        // MailActivityPlanTemplate routes (12 Backbone endpoints)
        .merge(create_mail_activity_plan_template_routes(services.mail_activity_plan_template))
        // MailAliasDomain routes (12 Backbone endpoints)
        .merge(create_mail_alias_domain_routes(services.mail_alias_domain))
        // MailAlias routes (12 Backbone endpoints)
        .merge(create_mail_alias_routes(services.mail_alias))
        // MailAttachment routes (12 Backbone endpoints)
        .merge(create_mail_attachment_routes(services.mail_attachment))
        // MailMessageAttachment routes (12 Backbone endpoints)
        .merge(create_mail_message_attachment_routes(services.mail_message_attachment))
        // MailMessageStar routes (12 Backbone endpoints)
        .merge(create_mail_message_star_routes(services.mail_message_star))
        // MailMessage routes (READ-ONLY mount — hand_set lifecycle; the state field moves only through the module's validated verbs)
        .merge(create_mail_message_read_routes(services.mail_message))
        // Mail routes (READ-ONLY mount — hand_set lifecycle; the state field moves only through the module's validated verbs)
        .merge(create_mail_read_routes(services.mail))
        // MailNotification routes (READ-ONLY mount — hand_set lifecycle; the state field moves only through the module's validated verbs)
        .merge(create_mail_notification_read_routes(services.mail_notification))
        // MailMessageSubtype routes (12 Backbone endpoints)
        .merge(create_mail_message_subtype_routes(services.mail_message_subtype))
        // MailMessageReaction routes (12 Backbone endpoints)
        .merge(create_mail_message_reaction_routes(services.mail_message_reaction))
        // MailFollowers routes (12 Backbone endpoints)
        .merge(create_mail_followers_routes(services.mail_followers))
        // MailPresence routes (READ-ONLY mount — hand_set lifecycle; the state field moves only through the module's validated verbs)
        .merge(create_mail_presence_read_routes(services.mail_presence))
        // MailBlacklist routes (12 Backbone endpoints)
        .merge(create_mail_blacklist_routes(services.mail_blacklist))
        // MailTrackingValue routes (12 Backbone endpoints)
        .merge(create_mail_tracking_value_routes(services.mail_tracking_value))
        // DiscussChannel routes (READ-ONLY mount — hand_set lifecycle; the state field moves only through the module's validated verbs)
        .merge(create_discuss_channel_read_routes(services.discuss_channel))
        // DiscussChannelMember routes (12 Backbone endpoints)
        .merge(create_discuss_channel_member_routes(services.discuss_channel_member))
        // MailGuest routes (12 Backbone endpoints)
        .merge(create_mail_guest_routes(services.mail_guest))
        // MailServer routes (12 Backbone endpoints)
        .merge(create_mail_server_routes(services.mail_server))
        // FetchmailServer routes (READ-ONLY mount — hand_set lifecycle; the state field moves only through the module's validated verbs)
        .merge(create_fetchmail_server_read_routes(services.fetchmail_server))
        // MailGatewayAllowed routes (12 Backbone endpoints)
        .merge(create_mail_gateway_allowed_routes(services.mail_gateway_allowed))
        // PhoneBlacklist routes (12 Backbone endpoints)
        .merge(create_phone_blacklist_routes(services.phone_blacklist))
        // MailMessageSchedule routes (12 Backbone endpoints)
        .merge(create_mail_message_schedule_routes(services.mail_message_schedule))
        // MailScheduledMessage routes (12 Backbone endpoints)
        .merge(create_mail_scheduled_message_routes(services.mail_scheduled_message))
        // Sms routes (READ-ONLY mount — hand_set lifecycle; the state field moves only through the module's validated verbs)
        .merge(create_sms_read_routes(services.sms))
        // SmsTemplate routes (12 Backbone endpoints)
        .merge(create_sms_template_routes(services.sms_template))
        // SmsTracker routes (READ-ONLY mount — hand_set lifecycle; the state field moves only through the module's validated verbs)
        .merge(create_sms_tracker_read_routes(services.sms_tracker))
}

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

    pub fn mail_activity_routes(service: Arc<MailActivityService>) -> Router {
        create_mail_activity_routes(service)
    }

    pub fn mail_activity_type_routes(service: Arc<MailActivityTypeService>) -> Router {
        create_mail_activity_type_read_routes(service)
    }

    pub fn mail_activity_plan_routes(service: Arc<MailActivityPlanService>) -> Router {
        create_mail_activity_plan_routes(service)
    }

    pub fn mail_activity_plan_template_routes(service: Arc<MailActivityPlanTemplateService>) -> Router {
        create_mail_activity_plan_template_routes(service)
    }

    pub fn mail_alias_domain_routes(service: Arc<MailAliasDomainService>) -> Router {
        create_mail_alias_domain_routes(service)
    }

    pub fn mail_alias_routes(service: Arc<MailAliasService>) -> Router {
        create_mail_alias_routes(service)
    }

    pub fn mail_attachment_routes(service: Arc<MailAttachmentService>) -> Router {
        create_mail_attachment_routes(service)
    }

    pub fn mail_message_attachment_routes(service: Arc<MailMessageAttachmentService>) -> Router {
        create_mail_message_attachment_routes(service)
    }

    pub fn mail_message_star_routes(service: Arc<MailMessageStarService>) -> Router {
        create_mail_message_star_routes(service)
    }

    pub fn mail_message_routes(service: Arc<MailMessageService>) -> Router {
        create_mail_message_read_routes(service)
    }

    pub fn mail_routes(service: Arc<MailService>) -> Router {
        create_mail_read_routes(service)
    }

    pub fn mail_notification_routes(service: Arc<MailNotificationService>) -> Router {
        create_mail_notification_read_routes(service)
    }

    pub fn mail_message_subtype_routes(service: Arc<MailMessageSubtypeService>) -> Router {
        create_mail_message_subtype_routes(service)
    }

    pub fn mail_message_reaction_routes(service: Arc<MailMessageReactionService>) -> Router {
        create_mail_message_reaction_routes(service)
    }

    pub fn mail_followers_routes(service: Arc<MailFollowersService>) -> Router {
        create_mail_followers_routes(service)
    }

    pub fn mail_presence_routes(service: Arc<MailPresenceService>) -> Router {
        create_mail_presence_read_routes(service)
    }

    pub fn mail_blacklist_routes(service: Arc<MailBlacklistService>) -> Router {
        create_mail_blacklist_routes(service)
    }

    pub fn mail_tracking_value_routes(service: Arc<MailTrackingValueService>) -> Router {
        create_mail_tracking_value_routes(service)
    }

    pub fn discuss_channel_routes(service: Arc<DiscussChannelService>) -> Router {
        create_discuss_channel_read_routes(service)
    }

    pub fn discuss_channel_member_routes(service: Arc<DiscussChannelMemberService>) -> Router {
        create_discuss_channel_member_routes(service)
    }

    pub fn mail_guest_routes(service: Arc<MailGuestService>) -> Router {
        create_mail_guest_routes(service)
    }

    pub fn mail_server_routes(service: Arc<MailServerService>) -> Router {
        create_mail_server_routes(service)
    }

    pub fn fetchmail_server_routes(service: Arc<FetchmailServerService>) -> Router {
        create_fetchmail_server_read_routes(service)
    }

    pub fn mail_gateway_allowed_routes(service: Arc<MailGatewayAllowedService>) -> Router {
        create_mail_gateway_allowed_routes(service)
    }

    pub fn phone_blacklist_routes(service: Arc<PhoneBlacklistService>) -> Router {
        create_phone_blacklist_routes(service)
    }

    pub fn mail_message_schedule_routes(service: Arc<MailMessageScheduleService>) -> Router {
        create_mail_message_schedule_routes(service)
    }

    pub fn mail_scheduled_message_routes(service: Arc<MailScheduledMessageService>) -> Router {
        create_mail_scheduled_message_routes(service)
    }

    pub fn sms_routes(service: Arc<SmsService>) -> Router {
        create_sms_read_routes(service)
    }

    pub fn sms_template_routes(service: Arc<SmsTemplateService>) -> Router {
        create_sms_template_routes(service)
    }

    pub fn sms_tracker_routes(service: Arc<SmsTrackerService>) -> Router {
        create_sms_tracker_read_routes(service)
    }

}