use std::sync::Arc;
use crate::application::service::ActivityService;
#[derive(Clone)]
pub struct AppState {
pub activity_service: Arc<ActivityService>,
}
impl AppState {
pub fn new(
activity_service: Arc<ActivityService>
) -> Self {
Self {
activity_service,
}
}
pub fn from_module(module: &crate::ActivityModule) -> Self {
Self {
activity_service: module.activity_service.clone(),
}
}
}
#[derive(Default)]
pub struct AppStateBuilder {
activity_service: Option<Arc<ActivityService>>,
}
impl AppStateBuilder {
pub fn new() -> Self {
Self::default()
}
pub fn with_activity_service(mut self, service: Arc<ActivityService>) -> Self {
self.activity_service = Some(service);
self
}
pub fn build(self) -> AppState {
AppState {
activity_service: self.activity_service.expect("activity_service is required"),
}
}
}