pub use analytics::AnalyticsConfig;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
pub use social::{SocialConfig, SocialLayer};
use super::ApplyLayer;
mod analytics;
mod social;
#[derive(Debug, Clone)]
pub struct MarketingConfig {
pub analytics: Option<AnalyticsConfig>,
pub social: SocialConfig,
}
#[derive(Debug, Serialize, Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct MarketingLayer {
pub analytics: Option<AnalyticsConfig>,
pub social: Option<SocialLayer>,
}
impl Default for MarketingConfig {
fn default() -> Self {
MarketingConfig {
analytics: None,
social: SocialConfig::default(),
}
}
}
impl ApplyLayer for MarketingConfig {
type Layer = MarketingLayer;
fn apply_layer(&mut self, layer: Self::Layer) {
let MarketingLayer { analytics, social } = layer;
if let Some(analytics) = analytics {
self.analytics = Some(analytics);
}
self.social.apply_val_layer(social);
}
}