This commit is contained in:
2026-07-28 22:49:50 +02:00
parent 066074dcd4
commit 9b705f0d96
6 changed files with 94 additions and 40 deletions
+40
View File
@@ -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
}
}