This commit is contained in:
2026-07-13 16:16:00 +02:00
parent 843dad8d79
commit dc2be94a8d
10 changed files with 102 additions and 38 deletions
+12 -2
View File
@@ -1,6 +1,9 @@
mod permission_sync;
pub mod state;
use crate::config::AppConfig;
use crate::core::permission_sync::PermissionSyncService;
use crate::core::state::Services;
use crate::database::Database;
use crate::http::server::HttpServer;
use crate::metrics::{reporter, AppMetrics};
@@ -16,6 +19,7 @@ use uuid::Uuid;
pub struct App {
pub state: AppState,
pub services: Services,
}
impl App {
@@ -31,7 +35,7 @@ impl App {
let event_bus = Arc::new(EventBus::with_capacity(1024));
// Initialize shared repositories
let repositories = Repositories::new(db.clone(), event_bus.clone());
let repositories = Arc::new(Repositories::new(db.clone(), event_bus.clone()));
// Initialize gateway manager
let gateway = Arc::new(GatewayManager::default());
@@ -66,6 +70,8 @@ impl App {
let metrics = AppMetrics::new();
let permission_sync = PermissionSyncService::new(repositories.clone(), event_bus.clone());
let state = AppState {
db,
config: Arc::new(config),
@@ -77,7 +83,11 @@ impl App {
event_bus,
};
Ok(Self { state })
let services = Services {
permission_sync: Arc::new(permission_sync),
};
Ok(Self { state, services })
}
pub async fn run(self) -> Result<(), Box<dyn std::error::Error>> {
+44
View File
@@ -0,0 +1,44 @@
use crate::repositories::Repositories;
use event_bus::EventBus;
use std::sync::Arc;
// list of all events :
// server_user_created
// server_user_deleted
//
// role_user_created
// role_user_deleted
//
// server_role_permission_created
// server_role_permission_updated
// server_role_permission_deleted
//
// server_user_permission_created
// server_user_permission_updated
// server_user_permission_deleted
//
// channel_role_permission_created
// channel_role_permission_updated
// channel_role_permission_deleted
//
// channel_user_permission_created
// channel_user_permission_updated
// channel_user_permission_deleted
//
// channel_created
// channel_deleted
#[derive(Debug, Clone)]
pub struct PermissionSyncService {
repositories: Arc<Repositories>,
event_bus: Arc<EventBus>,
}
impl PermissionSyncService {
pub fn new(repositories: Arc<Repositories>, event_bus: Arc<EventBus>) -> Self {
Self {
repositories,
event_bus,
}
}
}
+7 -1
View File
@@ -1,4 +1,5 @@
use crate::config::AppConfig;
use crate::core::permission_sync::PermissionSyncService;
use crate::metrics::AppMetrics;
use crate::models::server;
use crate::repositories::Repositories;
@@ -11,7 +12,7 @@ use std::sync::{Arc, RwLock};
pub struct AppState {
pub db: DatabaseConnection,
pub config: Arc<AppConfig>,
pub repositories: Repositories,
pub repositories: Arc<Repositories>,
pub init_token: Arc<RwLock<Option<uuid::Uuid>>>,
pub default_server: Arc<server::Model>,
pub metrics: AppMetrics,
@@ -20,3 +21,8 @@ pub struct AppState {
}
impl AppState {}
#[derive(Debug, Clone)]
pub struct Services {
pub permission_sync: Arc<PermissionSyncService>,
}