init
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
use crate::repositories::Repositories;
|
||||
use crate::services::permission_sync::PermissionSyncService;
|
||||
use crate::services::server_order::ServerOrderService;
|
||||
use event_bus::EventBus;
|
||||
use std::sync::{Arc, OnceLock};
|
||||
|
||||
pub mod permission_sync;
|
||||
mod server_order;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct ServicesContext {
|
||||
pub repositories: Arc<Repositories>,
|
||||
pub event_bus: Arc<EventBus>,
|
||||
pub services: OnceLock<Services>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Services {
|
||||
permission_sync: Arc<PermissionSyncService>,
|
||||
server_order: Arc<ServerOrderService>,
|
||||
}
|
||||
|
||||
impl Services {
|
||||
pub fn new(repositories: Arc<Repositories>, event_bus: Arc<EventBus>) -> Self {
|
||||
let service_context = Arc::new(ServicesContext {
|
||||
repositories,
|
||||
event_bus,
|
||||
services: OnceLock::new(),
|
||||
});
|
||||
let permission_sync = Arc::new(PermissionSyncService::new(service_context.clone()));
|
||||
let server_order = Arc::new(ServerOrderService::new(service_context.clone()));
|
||||
|
||||
let services = Self {
|
||||
permission_sync,
|
||||
server_order,
|
||||
};
|
||||
let _ = service_context.services.set(services.clone());
|
||||
services
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user