#![recursion_limit = "1024"]
#![allow(unused_imports)]
pub mod domain;
pub mod infrastructure;
pub mod application;
pub mod presentation;
pub mod seeders;
pub mod exports;
#[path = "lib.ext.rs"]
mod lib_ext;
pub use lib_ext::*;
#[allow(dead_code)]
pub(crate) type ThisModule = MessagingModule;
#[allow(dead_code)]
pub(crate) type ThisModuleBuilder = MessagingModuleBuilder;
pub use domain::entity::*;
pub use domain::state_machine::*;
pub use infrastructure::persistence::*;
pub use application::service::MailActivityService;
pub use application::service::MailActivityTypeService;
pub use application::service::MailActivityPlanService;
pub use application::service::MailActivityPlanTemplateService;
pub use application::service::MailAliasDomainService;
pub use application::service::MailAliasService;
pub use application::service::MailAttachmentService;
pub use application::service::MailMessageAttachmentService;
pub use application::service::MailMessageStarService;
pub use application::service::MailMessageService;
pub use application::service::MailService;
pub use application::service::MailNotificationService;
pub use application::service::MailMessageSubtypeService;
pub use application::service::MailMessageReactionService;
pub use application::service::MailFollowersService;
pub use application::service::MailPresenceService;
pub use application::service::MailBlacklistService;
pub use application::service::MailTrackingValueService;
pub use application::service::DiscussChannelService;
pub use application::service::DiscussChannelMemberService;
pub use application::service::MailGuestService;
pub use application::service::MailServerService;
pub use application::service::FetchmailServerService;
pub use application::service::MailGatewayAllowedService;
pub use application::service::PhoneBlacklistService;
pub use application::service::MailMessageScheduleService;
pub use application::service::MailScheduledMessageService;
pub use application::service::SmsService;
pub use application::service::SmsTemplateService;
pub use application::service::SmsTrackerService;
pub use application::validator::{ValidationError, ValidationResult};
use std::sync::Arc;
use axum::Router;
use sqlx::PgPool;
pub struct MessagingModule {
pub(crate) mail_activity_service: Arc<MailActivityService>,
pub(crate) mail_activity_type_service: Arc<MailActivityTypeService>,
pub(crate) mail_activity_plan_service: Arc<MailActivityPlanService>,
pub(crate) mail_activity_plan_template_service: Arc<MailActivityPlanTemplateService>,
pub(crate) mail_alias_domain_service: Arc<MailAliasDomainService>,
pub(crate) mail_alias_service: Arc<MailAliasService>,
pub(crate) mail_attachment_service: Arc<MailAttachmentService>,
pub(crate) mail_message_attachment_service: Arc<MailMessageAttachmentService>,
pub(crate) mail_message_star_service: Arc<MailMessageStarService>,
pub(crate) mail_message_service: Arc<MailMessageService>,
pub(crate) mail_service: Arc<MailService>,
pub(crate) mail_notification_service: Arc<MailNotificationService>,
pub(crate) mail_message_subtype_service: Arc<MailMessageSubtypeService>,
pub(crate) mail_message_reaction_service: Arc<MailMessageReactionService>,
pub(crate) mail_followers_service: Arc<MailFollowersService>,
pub(crate) mail_presence_service: Arc<MailPresenceService>,
pub(crate) mail_blacklist_service: Arc<MailBlacklistService>,
pub(crate) mail_tracking_value_service: Arc<MailTrackingValueService>,
pub(crate) discuss_channel_service: Arc<DiscussChannelService>,
pub(crate) discuss_channel_member_service: Arc<DiscussChannelMemberService>,
pub(crate) mail_guest_service: Arc<MailGuestService>,
pub(crate) mail_server_service: Arc<MailServerService>,
pub(crate) fetchmail_server_service: Arc<FetchmailServerService>,
pub(crate) mail_gateway_allowed_service: Arc<MailGatewayAllowedService>,
pub(crate) phone_blacklist_service: Arc<PhoneBlacklistService>,
pub(crate) mail_message_schedule_service: Arc<MailMessageScheduleService>,
pub(crate) mail_scheduled_message_service: Arc<MailScheduledMessageService>,
pub(crate) sms_service: Arc<SmsService>,
pub(crate) sms_template_service: Arc<SmsTemplateService>,
pub(crate) sms_tracker_service: Arc<SmsTrackerService>,
pub(crate) ext: ModuleExt,
}
impl std::ops::Deref for MessagingModule {
type Target = ModuleExt;
fn deref(&self) -> &Self::Target {
&self.ext
}
}
impl std::ops::DerefMut for MessagingModule {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.ext
}
}
#[allow(dead_code)]
pub(crate) struct ModuleParts<'a> {
pub(crate) db_pool: &'a PgPool,
pub(crate) mail_activity_service: &'a Arc<MailActivityService>,
pub(crate) mail_activity_repository: &'a Arc<MailActivityRepository>,
pub(crate) mail_activity_type_service: &'a Arc<MailActivityTypeService>,
pub(crate) mail_activity_type_repository: &'a Arc<MailActivityTypeRepository>,
pub(crate) mail_activity_plan_service: &'a Arc<MailActivityPlanService>,
pub(crate) mail_activity_plan_repository: &'a Arc<MailActivityPlanRepository>,
pub(crate) mail_activity_plan_template_service: &'a Arc<MailActivityPlanTemplateService>,
pub(crate) mail_activity_plan_template_repository: &'a Arc<MailActivityPlanTemplateRepository>,
pub(crate) mail_alias_domain_service: &'a Arc<MailAliasDomainService>,
pub(crate) mail_alias_domain_repository: &'a Arc<MailAliasDomainRepository>,
pub(crate) mail_alias_service: &'a Arc<MailAliasService>,
pub(crate) mail_alias_repository: &'a Arc<MailAliasRepository>,
pub(crate) mail_attachment_service: &'a Arc<MailAttachmentService>,
pub(crate) mail_attachment_repository: &'a Arc<MailAttachmentRepository>,
pub(crate) mail_message_attachment_service: &'a Arc<MailMessageAttachmentService>,
pub(crate) mail_message_attachment_repository: &'a Arc<MailMessageAttachmentRepository>,
pub(crate) mail_message_star_service: &'a Arc<MailMessageStarService>,
pub(crate) mail_message_star_repository: &'a Arc<MailMessageStarRepository>,
pub(crate) mail_message_service: &'a Arc<MailMessageService>,
pub(crate) mail_message_repository: &'a Arc<MailMessageRepository>,
pub(crate) mail_service: &'a Arc<MailService>,
pub(crate) mail_repository: &'a Arc<MailRepository>,
pub(crate) mail_notification_service: &'a Arc<MailNotificationService>,
pub(crate) mail_notification_repository: &'a Arc<MailNotificationRepository>,
pub(crate) mail_message_subtype_service: &'a Arc<MailMessageSubtypeService>,
pub(crate) mail_message_subtype_repository: &'a Arc<MailMessageSubtypeRepository>,
pub(crate) mail_message_reaction_service: &'a Arc<MailMessageReactionService>,
pub(crate) mail_message_reaction_repository: &'a Arc<MailMessageReactionRepository>,
pub(crate) mail_followers_service: &'a Arc<MailFollowersService>,
pub(crate) mail_followers_repository: &'a Arc<MailFollowersRepository>,
pub(crate) mail_presence_service: &'a Arc<MailPresenceService>,
pub(crate) mail_presence_repository: &'a Arc<MailPresenceRepository>,
pub(crate) mail_blacklist_service: &'a Arc<MailBlacklistService>,
pub(crate) mail_blacklist_repository: &'a Arc<MailBlacklistRepository>,
pub(crate) mail_tracking_value_service: &'a Arc<MailTrackingValueService>,
pub(crate) mail_tracking_value_repository: &'a Arc<MailTrackingValueRepository>,
pub(crate) discuss_channel_service: &'a Arc<DiscussChannelService>,
pub(crate) discuss_channel_repository: &'a Arc<DiscussChannelRepository>,
pub(crate) discuss_channel_member_service: &'a Arc<DiscussChannelMemberService>,
pub(crate) discuss_channel_member_repository: &'a Arc<DiscussChannelMemberRepository>,
pub(crate) mail_guest_service: &'a Arc<MailGuestService>,
pub(crate) mail_guest_repository: &'a Arc<MailGuestRepository>,
pub(crate) mail_server_service: &'a Arc<MailServerService>,
pub(crate) mail_server_repository: &'a Arc<MailServerRepository>,
pub(crate) fetchmail_server_service: &'a Arc<FetchmailServerService>,
pub(crate) fetchmail_server_repository: &'a Arc<FetchmailServerRepository>,
pub(crate) mail_gateway_allowed_service: &'a Arc<MailGatewayAllowedService>,
pub(crate) mail_gateway_allowed_repository: &'a Arc<MailGatewayAllowedRepository>,
pub(crate) phone_blacklist_service: &'a Arc<PhoneBlacklistService>,
pub(crate) phone_blacklist_repository: &'a Arc<PhoneBlacklistRepository>,
pub(crate) mail_message_schedule_service: &'a Arc<MailMessageScheduleService>,
pub(crate) mail_message_schedule_repository: &'a Arc<MailMessageScheduleRepository>,
pub(crate) mail_scheduled_message_service: &'a Arc<MailScheduledMessageService>,
pub(crate) mail_scheduled_message_repository: &'a Arc<MailScheduledMessageRepository>,
pub(crate) sms_service: &'a Arc<SmsService>,
pub(crate) sms_repository: &'a Arc<SmsRepository>,
pub(crate) sms_template_service: &'a Arc<SmsTemplateService>,
pub(crate) sms_template_repository: &'a Arc<SmsTemplateRepository>,
pub(crate) sms_tracker_service: &'a Arc<SmsTrackerService>,
pub(crate) sms_tracker_repository: &'a Arc<SmsTrackerRepository>,
}
impl MessagingModule {
pub fn builder() -> MessagingModuleBuilder {
MessagingModuleBuilder::new()
}
pub fn all_crud_routes(&self) -> Router {
use presentation::http::{
create_mail_activity_routes,
create_mail_activity_type_read_routes,
create_mail_activity_plan_routes,
create_mail_activity_plan_template_routes,
create_mail_alias_domain_routes,
create_mail_alias_routes,
create_mail_attachment_routes,
create_mail_message_attachment_routes,
create_mail_message_star_routes,
create_mail_message_read_routes,
create_mail_read_routes,
create_mail_notification_read_routes,
create_mail_message_subtype_routes,
create_mail_message_reaction_routes,
create_mail_followers_routes,
create_mail_presence_read_routes,
create_mail_blacklist_routes,
create_mail_tracking_value_routes,
create_discuss_channel_read_routes,
create_discuss_channel_member_routes,
create_mail_guest_routes,
create_mail_server_routes,
create_fetchmail_server_read_routes,
create_mail_gateway_allowed_routes,
create_phone_blacklist_routes,
create_mail_message_schedule_routes,
create_mail_scheduled_message_routes,
create_sms_read_routes,
create_sms_template_routes,
create_sms_tracker_read_routes,
};
Router::new()
.merge(create_mail_activity_routes(self.mail_activity_service.clone()))
.merge(create_mail_activity_type_read_routes(self.mail_activity_type_service.clone()))
.merge(create_mail_activity_plan_routes(self.mail_activity_plan_service.clone()))
.merge(create_mail_activity_plan_template_routes(self.mail_activity_plan_template_service.clone()))
.merge(create_mail_alias_domain_routes(self.mail_alias_domain_service.clone()))
.merge(create_mail_alias_routes(self.mail_alias_service.clone()))
.merge(create_mail_attachment_routes(self.mail_attachment_service.clone()))
.merge(create_mail_message_attachment_routes(self.mail_message_attachment_service.clone()))
.merge(create_mail_message_star_routes(self.mail_message_star_service.clone()))
.merge(create_mail_message_read_routes(self.mail_message_service.clone()))
.merge(create_mail_read_routes(self.mail_service.clone()))
.merge(create_mail_notification_read_routes(self.mail_notification_service.clone()))
.merge(create_mail_message_subtype_routes(self.mail_message_subtype_service.clone()))
.merge(create_mail_message_reaction_routes(self.mail_message_reaction_service.clone()))
.merge(create_mail_followers_routes(self.mail_followers_service.clone()))
.merge(create_mail_presence_read_routes(self.mail_presence_service.clone()))
.merge(create_mail_blacklist_routes(self.mail_blacklist_service.clone()))
.merge(create_mail_tracking_value_routes(self.mail_tracking_value_service.clone()))
.merge(create_discuss_channel_read_routes(self.discuss_channel_service.clone()))
.merge(create_discuss_channel_member_routes(self.discuss_channel_member_service.clone()))
.merge(create_mail_guest_routes(self.mail_guest_service.clone()))
.merge(create_mail_server_routes(self.mail_server_service.clone()))
.merge(create_fetchmail_server_read_routes(self.fetchmail_server_service.clone()))
.merge(create_mail_gateway_allowed_routes(self.mail_gateway_allowed_service.clone()))
.merge(create_phone_blacklist_routes(self.phone_blacklist_service.clone()))
.merge(create_mail_message_schedule_routes(self.mail_message_schedule_service.clone()))
.merge(create_mail_scheduled_message_routes(self.mail_scheduled_message_service.clone()))
.merge(create_sms_read_routes(self.sms_service.clone()))
.merge(create_sms_template_routes(self.sms_template_service.clone()))
.merge(create_sms_tracker_read_routes(self.sms_tracker_service.clone()))
}
#[deprecated(note = "mounts unvalidated generic CRUD; prefer readonly_routes() + validated writes, or all_crud_routes() for the full/unguarded surface")]
pub fn routes(&self) -> Router {
self.all_crud_routes()
}
pub fn readonly_routes(&self) -> Router {
use presentation::http::{
create_mail_activity_read_routes,
create_mail_activity_type_read_routes,
create_mail_activity_plan_read_routes,
create_mail_activity_plan_template_read_routes,
create_mail_alias_domain_read_routes,
create_mail_alias_read_routes,
create_mail_attachment_read_routes,
create_mail_message_attachment_read_routes,
create_mail_message_star_read_routes,
create_mail_message_read_routes,
create_mail_read_routes,
create_mail_notification_read_routes,
create_mail_message_subtype_read_routes,
create_mail_message_reaction_read_routes,
create_mail_followers_read_routes,
create_mail_presence_read_routes,
create_mail_blacklist_read_routes,
create_mail_tracking_value_read_routes,
create_discuss_channel_read_routes,
create_discuss_channel_member_read_routes,
create_mail_guest_read_routes,
create_mail_server_read_routes,
create_fetchmail_server_read_routes,
create_mail_gateway_allowed_read_routes,
create_phone_blacklist_read_routes,
create_mail_message_schedule_read_routes,
create_mail_scheduled_message_read_routes,
create_sms_read_routes,
create_sms_template_read_routes,
create_sms_tracker_read_routes,
};
Router::new()
.merge(create_mail_activity_read_routes(self.mail_activity_service.clone()))
.merge(create_mail_activity_type_read_routes(self.mail_activity_type_service.clone()))
.merge(create_mail_activity_plan_read_routes(self.mail_activity_plan_service.clone()))
.merge(create_mail_activity_plan_template_read_routes(self.mail_activity_plan_template_service.clone()))
.merge(create_mail_alias_domain_read_routes(self.mail_alias_domain_service.clone()))
.merge(create_mail_alias_read_routes(self.mail_alias_service.clone()))
.merge(create_mail_attachment_read_routes(self.mail_attachment_service.clone()))
.merge(create_mail_message_attachment_read_routes(self.mail_message_attachment_service.clone()))
.merge(create_mail_message_star_read_routes(self.mail_message_star_service.clone()))
.merge(create_mail_message_read_routes(self.mail_message_service.clone()))
.merge(create_mail_read_routes(self.mail_service.clone()))
.merge(create_mail_notification_read_routes(self.mail_notification_service.clone()))
.merge(create_mail_message_subtype_read_routes(self.mail_message_subtype_service.clone()))
.merge(create_mail_message_reaction_read_routes(self.mail_message_reaction_service.clone()))
.merge(create_mail_followers_read_routes(self.mail_followers_service.clone()))
.merge(create_mail_presence_read_routes(self.mail_presence_service.clone()))
.merge(create_mail_blacklist_read_routes(self.mail_blacklist_service.clone()))
.merge(create_mail_tracking_value_read_routes(self.mail_tracking_value_service.clone()))
.merge(create_discuss_channel_read_routes(self.discuss_channel_service.clone()))
.merge(create_discuss_channel_member_read_routes(self.discuss_channel_member_service.clone()))
.merge(create_mail_guest_read_routes(self.mail_guest_service.clone()))
.merge(create_mail_server_read_routes(self.mail_server_service.clone()))
.merge(create_fetchmail_server_read_routes(self.fetchmail_server_service.clone()))
.merge(create_mail_gateway_allowed_read_routes(self.mail_gateway_allowed_service.clone()))
.merge(create_phone_blacklist_read_routes(self.phone_blacklist_service.clone()))
.merge(create_mail_message_schedule_read_routes(self.mail_message_schedule_service.clone()))
.merge(create_mail_scheduled_message_read_routes(self.mail_scheduled_message_service.clone()))
.merge(create_sms_read_routes(self.sms_service.clone()))
.merge(create_sms_template_read_routes(self.sms_template_service.clone()))
.merge(create_sms_tracker_read_routes(self.sms_tracker_service.clone()))
}
pub fn transition_routes(&self) -> Router {
Router::new()
.merge(presentation::http::mail_activity_type_handler::create_mail_activity_type_transition_routes(self.mail_activity_type_service.clone()))
}
}
pub struct MessagingModuleBuilder {
db_pool: Option<PgPool>,
ext: ModuleBuilderExt,
}
impl std::ops::Deref for MessagingModuleBuilder {
type Target = ModuleBuilderExt;
fn deref(&self) -> &Self::Target {
&self.ext
}
}
impl std::ops::DerefMut for MessagingModuleBuilder {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.ext
}
}
impl MessagingModuleBuilder {
pub fn new() -> Self {
Self {
db_pool: None,
ext: Default::default(),
}
}
pub fn with_database(mut self, pool: PgPool) -> Self {
self.db_pool = Some(pool);
self
}
pub fn build(self) -> anyhow::Result<MessagingModule> {
let db_pool = self.db_pool
.ok_or_else(|| anyhow::anyhow!("Database pool not configured"))?;
let mail_activity_repository = Arc::new(MailActivityRepository::new(db_pool.clone()));
let mail_activity_service = Arc::new(MailActivityService::with_repository(mail_activity_repository.clone()));
let mail_activity_type_repository = Arc::new(MailActivityTypeRepository::new(db_pool.clone()));
let mail_activity_type_service = Arc::new(MailActivityTypeService::with_repository(mail_activity_type_repository.clone()).with_guard(Arc::new(crate::application::service::MailActivityTypeRowRules)));
let mail_activity_plan_repository = Arc::new(MailActivityPlanRepository::new(db_pool.clone()));
let mail_activity_plan_service = Arc::new(MailActivityPlanService::with_repository(mail_activity_plan_repository.clone()));
let mail_activity_plan_template_repository = Arc::new(MailActivityPlanTemplateRepository::new(db_pool.clone()));
let mail_activity_plan_template_service = Arc::new(MailActivityPlanTemplateService::with_repository(mail_activity_plan_template_repository.clone()));
let mail_alias_domain_repository = Arc::new(MailAliasDomainRepository::new(db_pool.clone()));
let mail_alias_domain_service = Arc::new(MailAliasDomainService::with_repository(mail_alias_domain_repository.clone()));
let mail_alias_repository = Arc::new(MailAliasRepository::new(db_pool.clone()));
let mail_alias_service = Arc::new(MailAliasService::with_repository(mail_alias_repository.clone()));
let mail_attachment_repository = Arc::new(MailAttachmentRepository::new(db_pool.clone()));
let mail_attachment_service = Arc::new(MailAttachmentService::with_repository(mail_attachment_repository.clone()));
let mail_message_attachment_repository = Arc::new(MailMessageAttachmentRepository::new(db_pool.clone()));
let mail_message_attachment_service = Arc::new(MailMessageAttachmentService::with_repository(mail_message_attachment_repository.clone()));
let mail_message_star_repository = Arc::new(MailMessageStarRepository::new(db_pool.clone()));
let mail_message_star_service = Arc::new(MailMessageStarService::with_repository(mail_message_star_repository.clone()));
let mail_message_repository = Arc::new(MailMessageRepository::new(db_pool.clone()));
let mail_message_service = Arc::new(MailMessageService::with_repository(mail_message_repository.clone()));
let mail_repository = Arc::new(MailRepository::new(db_pool.clone()));
let mail_service = Arc::new(MailService::with_repository(mail_repository.clone()).with_guard(Arc::new(crate::application::service::MailRowRules)));
let mail_notification_repository = Arc::new(MailNotificationRepository::new(db_pool.clone()));
let mail_notification_service = Arc::new(MailNotificationService::with_repository(mail_notification_repository.clone()).with_guard(Arc::new(crate::application::service::MailNotificationRowRules)));
let mail_message_subtype_repository = Arc::new(MailMessageSubtypeRepository::new(db_pool.clone()));
let mail_message_subtype_service = Arc::new(MailMessageSubtypeService::with_repository(mail_message_subtype_repository.clone()));
let mail_message_reaction_repository = Arc::new(MailMessageReactionRepository::new(db_pool.clone()));
let mail_message_reaction_service = Arc::new(MailMessageReactionService::with_repository(mail_message_reaction_repository.clone()));
let mail_followers_repository = Arc::new(MailFollowersRepository::new(db_pool.clone()));
let mail_followers_service = Arc::new(MailFollowersService::with_repository(mail_followers_repository.clone()));
let mail_presence_repository = Arc::new(MailPresenceRepository::new(db_pool.clone()));
let mail_presence_service = Arc::new(MailPresenceService::with_repository(mail_presence_repository.clone()).with_guard(Arc::new(crate::application::service::MailPresenceRowRules)));
let mail_blacklist_repository = Arc::new(MailBlacklistRepository::new(db_pool.clone()));
let mail_blacklist_service = Arc::new(MailBlacklistService::with_repository(mail_blacklist_repository.clone()));
let mail_tracking_value_repository = Arc::new(MailTrackingValueRepository::new(db_pool.clone()));
let mail_tracking_value_service = Arc::new(MailTrackingValueService::with_repository(mail_tracking_value_repository.clone()));
let discuss_channel_repository = Arc::new(DiscussChannelRepository::new(db_pool.clone()));
let discuss_channel_service = Arc::new(DiscussChannelService::with_repository(discuss_channel_repository.clone()));
let discuss_channel_member_repository = Arc::new(DiscussChannelMemberRepository::new(db_pool.clone()));
let discuss_channel_member_service = Arc::new(DiscussChannelMemberService::with_repository(discuss_channel_member_repository.clone()));
let mail_guest_repository = Arc::new(MailGuestRepository::new(db_pool.clone()));
let mail_guest_service = Arc::new(MailGuestService::with_repository(mail_guest_repository.clone()));
let mail_server_repository = Arc::new(MailServerRepository::new(db_pool.clone()));
let mail_server_service = Arc::new(MailServerService::with_repository(mail_server_repository.clone()));
let fetchmail_server_repository = Arc::new(FetchmailServerRepository::new(db_pool.clone()));
let fetchmail_server_service = Arc::new(FetchmailServerService::with_repository(fetchmail_server_repository.clone()));
let mail_gateway_allowed_repository = Arc::new(MailGatewayAllowedRepository::new(db_pool.clone()));
let mail_gateway_allowed_service = Arc::new(MailGatewayAllowedService::with_repository(mail_gateway_allowed_repository.clone()));
let phone_blacklist_repository = Arc::new(PhoneBlacklistRepository::new(db_pool.clone()));
let phone_blacklist_service = Arc::new(PhoneBlacklistService::with_repository(phone_blacklist_repository.clone()));
let mail_message_schedule_repository = Arc::new(MailMessageScheduleRepository::new(db_pool.clone()));
let mail_message_schedule_service = Arc::new(MailMessageScheduleService::with_repository(mail_message_schedule_repository.clone()));
let mail_scheduled_message_repository = Arc::new(MailScheduledMessageRepository::new(db_pool.clone()));
let mail_scheduled_message_service = Arc::new(MailScheduledMessageService::with_repository(mail_scheduled_message_repository.clone()));
let sms_repository = Arc::new(SmsRepository::new(db_pool.clone()));
let sms_service = Arc::new(SmsService::with_repository(sms_repository.clone()).with_guard(Arc::new(crate::application::service::SmsRowRules)));
let sms_template_repository = Arc::new(SmsTemplateRepository::new(db_pool.clone()));
let sms_template_service = Arc::new(SmsTemplateService::with_repository(sms_template_repository.clone()));
let sms_tracker_repository = Arc::new(SmsTrackerRepository::new(db_pool.clone()));
let sms_tracker_service = Arc::new(SmsTrackerService::with_repository(sms_tracker_repository.clone()));
let ext = self.ext.build(&ModuleParts {
db_pool: &db_pool,
mail_activity_service: &mail_activity_service,
mail_activity_repository: &mail_activity_repository,
mail_activity_type_service: &mail_activity_type_service,
mail_activity_type_repository: &mail_activity_type_repository,
mail_activity_plan_service: &mail_activity_plan_service,
mail_activity_plan_repository: &mail_activity_plan_repository,
mail_activity_plan_template_service: &mail_activity_plan_template_service,
mail_activity_plan_template_repository: &mail_activity_plan_template_repository,
mail_alias_domain_service: &mail_alias_domain_service,
mail_alias_domain_repository: &mail_alias_domain_repository,
mail_alias_service: &mail_alias_service,
mail_alias_repository: &mail_alias_repository,
mail_attachment_service: &mail_attachment_service,
mail_attachment_repository: &mail_attachment_repository,
mail_message_attachment_service: &mail_message_attachment_service,
mail_message_attachment_repository: &mail_message_attachment_repository,
mail_message_star_service: &mail_message_star_service,
mail_message_star_repository: &mail_message_star_repository,
mail_message_service: &mail_message_service,
mail_message_repository: &mail_message_repository,
mail_service: &mail_service,
mail_repository: &mail_repository,
mail_notification_service: &mail_notification_service,
mail_notification_repository: &mail_notification_repository,
mail_message_subtype_service: &mail_message_subtype_service,
mail_message_subtype_repository: &mail_message_subtype_repository,
mail_message_reaction_service: &mail_message_reaction_service,
mail_message_reaction_repository: &mail_message_reaction_repository,
mail_followers_service: &mail_followers_service,
mail_followers_repository: &mail_followers_repository,
mail_presence_service: &mail_presence_service,
mail_presence_repository: &mail_presence_repository,
mail_blacklist_service: &mail_blacklist_service,
mail_blacklist_repository: &mail_blacklist_repository,
mail_tracking_value_service: &mail_tracking_value_service,
mail_tracking_value_repository: &mail_tracking_value_repository,
discuss_channel_service: &discuss_channel_service,
discuss_channel_repository: &discuss_channel_repository,
discuss_channel_member_service: &discuss_channel_member_service,
discuss_channel_member_repository: &discuss_channel_member_repository,
mail_guest_service: &mail_guest_service,
mail_guest_repository: &mail_guest_repository,
mail_server_service: &mail_server_service,
mail_server_repository: &mail_server_repository,
fetchmail_server_service: &fetchmail_server_service,
fetchmail_server_repository: &fetchmail_server_repository,
mail_gateway_allowed_service: &mail_gateway_allowed_service,
mail_gateway_allowed_repository: &mail_gateway_allowed_repository,
phone_blacklist_service: &phone_blacklist_service,
phone_blacklist_repository: &phone_blacklist_repository,
mail_message_schedule_service: &mail_message_schedule_service,
mail_message_schedule_repository: &mail_message_schedule_repository,
mail_scheduled_message_service: &mail_scheduled_message_service,
mail_scheduled_message_repository: &mail_scheduled_message_repository,
sms_service: &sms_service,
sms_repository: &sms_repository,
sms_template_service: &sms_template_service,
sms_template_repository: &sms_template_repository,
sms_tracker_service: &sms_tracker_service,
sms_tracker_repository: &sms_tracker_repository,
})?;
Ok(MessagingModule {
mail_activity_service,
mail_activity_type_service,
mail_activity_plan_service,
mail_activity_plan_template_service,
mail_alias_domain_service,
mail_alias_service,
mail_attachment_service,
mail_message_attachment_service,
mail_message_star_service,
mail_message_service,
mail_service,
mail_notification_service,
mail_message_subtype_service,
mail_message_reaction_service,
mail_followers_service,
mail_presence_service,
mail_blacklist_service,
mail_tracking_value_service,
discuss_channel_service,
discuss_channel_member_service,
mail_guest_service,
mail_server_service,
fetchmail_server_service,
mail_gateway_allowed_service,
phone_blacklist_service,
mail_message_schedule_service,
mail_scheduled_message_service,
sms_service,
sms_template_service,
sms_tracker_service,
ext,
})
}
}
impl Default for MessagingModuleBuilder {
fn default() -> Self {
Self::new()
}
}
include!("mod.ext.rs");