backbone-mailing 0.13.0

Email marketing — mass-mail engine: audiences, subscriptions, hand-set mailing lifecycle, seeded A/B testing, per-recipient traces, cycle-44 bridge targets (Odoo mass_mailing port)
//! Application services
//!
//! Generated by metaphor-schema. Do not edit manually.
//!
//! Each entity service is a type alias over `GenericCrudService`.

pub mod error;
pub use error::{ServiceError, ServiceResult};

pub mod mailing_ab_test_service;
pub mod mailing_audience_service;
pub mod mailing_contact_service;
pub mod mailing_subscription_service;
pub mod opt_out_reason_service;
pub mod mailing_service;
pub mod mailing_trace_service;
pub mod mailing_filter_service;


pub use mailing_ab_test_service::MailingAbTestService;
pub use mailing_audience_service::MailingAudienceService;
pub use mailing_contact_service::MailingContactService;
pub use mailing_subscription_service::MailingSubscriptionService;
pub use opt_out_reason_service::OptOutReasonService;
pub use mailing_service::MailingService;
pub use mailing_trace_service::MailingTraceService;
pub use mailing_filter_service::MailingFilterService;
pub use mailing_ab_test_service::MailingAbTestRowRules;
pub use mailing_audience_service::MailingAudienceRowRules;
pub use mailing_contact_service::MailingContactRowRules;
pub use mailing_subscription_service::MailingSubscriptionRowRules;
pub use opt_out_reason_service::OptOutReasonRowRules;
pub use mailing_service::MailingRowRules;
pub use mailing_trace_service::MailingTraceRowRules;
pub use mailing_filter_service::MailingFilterRowRules;

/// A `MailingAbTestService` over `repository` with its write guard attached: the way to build it, so its writes are
/// served only with the rules the schema declares.
pub fn build_mailing_ab_test_service(
    repository: std::sync::Arc<crate::infrastructure::persistence::MailingAbTestRepository>,
) -> MailingAbTestService {
    MailingAbTestService::with_repository(repository).with_guard(std::sync::Arc::new(MailingAbTestRowRules))
}

/// A `MailingAudienceService` over `repository` with its write guard attached: the way to build it, so its writes are
/// served only with the rules the schema declares.
pub fn build_mailing_audience_service(
    repository: std::sync::Arc<crate::infrastructure::persistence::MailingAudienceRepository>,
) -> MailingAudienceService {
    MailingAudienceService::with_repository(repository).with_guard(std::sync::Arc::new(MailingAudienceRowRules))
}

/// A `MailingContactService` over `repository` with its write guard attached: the way to build it, so its writes are
/// served only with the rules the schema declares.
pub fn build_mailing_contact_service(
    repository: std::sync::Arc<crate::infrastructure::persistence::MailingContactRepository>,
) -> MailingContactService {
    MailingContactService::with_repository(repository).with_guard(std::sync::Arc::new(MailingContactRowRules))
}

/// A `MailingSubscriptionService` over `repository` with its write guard attached: the way to build it, so its writes are
/// served only with the rules the schema declares.
pub fn build_mailing_subscription_service(
    repository: std::sync::Arc<crate::infrastructure::persistence::MailingSubscriptionRepository>,
) -> MailingSubscriptionService {
    MailingSubscriptionService::with_repository(repository).with_guard(std::sync::Arc::new(MailingSubscriptionRowRules))
}

/// A `OptOutReasonService` over `repository` with its write guard attached: the way to build it, so its writes are
/// served only with the rules the schema declares.
pub fn build_opt_out_reason_service(
    repository: std::sync::Arc<crate::infrastructure::persistence::OptOutReasonRepository>,
) -> OptOutReasonService {
    OptOutReasonService::with_repository(repository).with_guard(std::sync::Arc::new(OptOutReasonRowRules))
}

/// A `MailingService` over `repository` with its write guard attached: the way to build it, so its writes are
/// served only with the rules the schema declares.
pub fn build_mailing_service(
    repository: std::sync::Arc<crate::infrastructure::persistence::MailingRepository>,
) -> MailingService {
    MailingService::with_repository(repository).with_guard(std::sync::Arc::new(MailingRowRules))
}

/// A `MailingTraceService` over `repository` with its write guard attached: the way to build it, so its writes are
/// served only with the rules the schema declares.
pub fn build_mailing_trace_service(
    repository: std::sync::Arc<crate::infrastructure::persistence::MailingTraceRepository>,
) -> MailingTraceService {
    MailingTraceService::with_repository(repository).with_guard(std::sync::Arc::new(MailingTraceRowRules))
}

/// A `MailingFilterService` over `repository` with its write guard attached: the way to build it, so its writes are
/// served only with the rules the schema declares.
pub fn build_mailing_filter_service(
    repository: std::sync::Arc<crate::infrastructure::persistence::MailingFilterRepository>,
) -> MailingFilterService {
    MailingFilterService::with_repository(repository).with_guard(std::sync::Arc::new(MailingFilterRowRules))
}

// This directory's extension (hand-written; ADR-0031).
include!("mod.ext.rs");