init
This commit is contained in:
+12
-2
@@ -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>> {
|
||||
|
||||
@@ -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
@@ -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>,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user