use axum::Router;
use std::sync::Arc;
use super::{
mailing_ab_test_handler::create_mailing_ab_test_routes,
mailing_audience_handler::create_mailing_audience_routes,
mailing_contact_handler::create_mailing_contact_routes,
mailing_subscription_handler::create_mailing_subscription_routes,
opt_out_reason_handler::create_opt_out_reason_routes,
mailing_handler::create_mailing_read_routes,
mailing_trace_handler::create_mailing_trace_read_routes,
mailing_filter_handler::create_mailing_filter_routes,
};
use crate::application::service::{
MailingAbTestService,
MailingAudienceService,
MailingContactService,
MailingSubscriptionService,
OptOutReasonService,
MailingService,
MailingTraceService,
MailingFilterService,
};
pub struct HttpServices {
pub mailing_ab_test: Arc<MailingAbTestService>,
pub mailing_audience: Arc<MailingAudienceService>,
pub mailing_contact: Arc<MailingContactService>,
pub mailing_subscription: Arc<MailingSubscriptionService>,
pub opt_out_reason: Arc<OptOutReasonService>,
pub mailing: Arc<MailingService>,
pub mailing_trace: Arc<MailingTraceService>,
pub mailing_filter: Arc<MailingFilterService>,
}
pub fn configure_routes(services: HttpServices) -> Router {
Router::new()
.merge(create_mailing_ab_test_routes(services.mailing_ab_test))
.merge(create_mailing_audience_routes(services.mailing_audience))
.merge(create_mailing_contact_routes(services.mailing_contact))
.merge(create_mailing_subscription_routes(services.mailing_subscription))
.merge(create_opt_out_reason_routes(services.opt_out_reason))
.merge(create_mailing_read_routes(services.mailing))
.merge(create_mailing_trace_read_routes(services.mailing_trace))
.merge(create_mailing_filter_routes(services.mailing_filter))
}
pub mod individual {
use super::*;
pub fn mailing_ab_test_routes(service: Arc<MailingAbTestService>) -> Router {
create_mailing_ab_test_routes(service)
}
pub fn mailing_audience_routes(service: Arc<MailingAudienceService>) -> Router {
create_mailing_audience_routes(service)
}
pub fn mailing_contact_routes(service: Arc<MailingContactService>) -> Router {
create_mailing_contact_routes(service)
}
pub fn mailing_subscription_routes(service: Arc<MailingSubscriptionService>) -> Router {
create_mailing_subscription_routes(service)
}
pub fn opt_out_reason_routes(service: Arc<OptOutReasonService>) -> Router {
create_opt_out_reason_routes(service)
}
pub fn mailing_routes(service: Arc<MailingService>) -> Router {
create_mailing_read_routes(service)
}
pub fn mailing_trace_routes(service: Arc<MailingTraceService>) -> Router {
create_mailing_trace_read_routes(service)
}
pub fn mailing_filter_routes(service: Arc<MailingFilterService>) -> Router {
create_mailing_filter_routes(service)
}
}