refactor app service
This commit is contained in:
@@ -11,15 +11,8 @@ use crate::{
|
|||||||
cmd::CliCommand,
|
cmd::CliCommand,
|
||||||
configs::{ProgramSettings, get_program_settings, logging::LoggingSettings},
|
configs::{ProgramSettings, get_program_settings, logging::LoggingSettings},
|
||||||
log,
|
log,
|
||||||
routes::{self, AppService, AppState},
|
routes::{self, AppState},
|
||||||
services::{
|
services::get_app_service,
|
||||||
auth::{
|
|
||||||
authentication::{AuthenticationServiceImpl, strategies::password::PasswordStrategy},
|
|
||||||
user::UserServiceImpl,
|
|
||||||
},
|
|
||||||
server_state::ServerStateService,
|
|
||||||
settings::SettingsService,
|
|
||||||
},
|
|
||||||
tasks,
|
tasks,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -148,19 +141,7 @@ fn get_app_state(
|
|||||||
AppState {
|
AppState {
|
||||||
database_connection: db_connection.clone(),
|
database_connection: db_connection.clone(),
|
||||||
config: Arc::new(settings.clone()),
|
config: Arc::new(settings.clone()),
|
||||||
service: Arc::new(AppService {
|
service: Arc::new(get_app_service(db_connection, settings)),
|
||||||
server_state: Arc::new(ServerStateService::new(db_connection.clone())),
|
|
||||||
settings: Arc::new(SettingsService::new(db_connection.clone())),
|
|
||||||
auth_state: routes::AuthState {
|
|
||||||
strategy: routes::AuthStrategy {
|
|
||||||
password: Arc::new(PasswordStrategy::new(db_connection.clone())),
|
|
||||||
},
|
|
||||||
authentication: Arc::new(AuthenticationServiceImpl::new(
|
|
||||||
settings.auth.jwt_secret.clone(),
|
|
||||||
)),
|
|
||||||
},
|
|
||||||
user: Arc::new(UserServiceImpl::new(db_connection.clone())),
|
|
||||||
}),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,12 +12,8 @@ use crate::{
|
|||||||
configs::{ProgramSettings, server::CORSSettings},
|
configs::{ProgramSettings, server::CORSSettings},
|
||||||
middlewares,
|
middlewares,
|
||||||
services::{
|
services::{
|
||||||
auth::{
|
AppService, ServiceState,
|
||||||
authentication::{AuthenticationService, strategies::password::PasswordStrategy},
|
auth::authentication::{AuthenticationService, strategies::password::PasswordStrategy},
|
||||||
user::UserService,
|
|
||||||
},
|
|
||||||
server_state::ServerStateStore,
|
|
||||||
settings::SettingsStore,
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -28,8 +24,6 @@ pub struct AppState {
|
|||||||
pub config: Arc<ProgramSettings>,
|
pub config: Arc<ProgramSettings>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type ServiceState<T> = Arc<T>;
|
|
||||||
|
|
||||||
pub struct AuthStrategy {
|
pub struct AuthStrategy {
|
||||||
pub password: ServiceState<PasswordStrategy>,
|
pub password: ServiceState<PasswordStrategy>,
|
||||||
}
|
}
|
||||||
@@ -39,13 +33,6 @@ pub struct AuthState {
|
|||||||
pub authentication: ServiceState<dyn AuthenticationService>,
|
pub authentication: ServiceState<dyn AuthenticationService>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct AppService {
|
|
||||||
pub settings: ServiceState<dyn SettingsStore>,
|
|
||||||
pub auth_state: AuthState,
|
|
||||||
pub user: ServiceState<dyn UserService>,
|
|
||||||
pub server_state: ServiceState<dyn ServerStateStore>,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn get_root_router(
|
pub fn get_root_router(
|
||||||
state: impl Into<Arc<AppState>>,
|
state: impl Into<Arc<AppState>>,
|
||||||
cors_settings: Arc<CORSSettings>,
|
cors_settings: Arc<CORSSettings>,
|
||||||
|
|||||||
@@ -2,3 +2,46 @@ pub mod agent_client;
|
|||||||
pub mod auth;
|
pub mod auth;
|
||||||
pub mod server_state;
|
pub mod server_state;
|
||||||
pub mod settings;
|
pub mod settings;
|
||||||
|
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
use crate::{
|
||||||
|
configs::ProgramSettings,
|
||||||
|
routes::{self, AuthState},
|
||||||
|
services::{
|
||||||
|
auth::{
|
||||||
|
authentication::{AuthenticationServiceImpl, strategies::password::PasswordStrategy},
|
||||||
|
user::{UserService, UserServiceImpl},
|
||||||
|
},
|
||||||
|
server_state::{ServerStateService, ServerStateStore},
|
||||||
|
settings::{SettingsService, SettingsStore},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
pub type ServiceState<T> = Arc<T>;
|
||||||
|
|
||||||
|
pub struct AppService {
|
||||||
|
pub settings: ServiceState<dyn SettingsStore>,
|
||||||
|
pub auth_state: AuthState,
|
||||||
|
pub user: ServiceState<dyn UserService>,
|
||||||
|
pub server_state: ServiceState<dyn ServerStateStore>,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_app_service(
|
||||||
|
db_connection: &Arc<sea_orm::DatabaseConnection>,
|
||||||
|
settings: &ProgramSettings,
|
||||||
|
) -> AppService {
|
||||||
|
AppService {
|
||||||
|
server_state: Arc::new(ServerStateService::new(db_connection.clone())),
|
||||||
|
settings: Arc::new(SettingsService::new(db_connection.clone())),
|
||||||
|
auth_state: routes::AuthState {
|
||||||
|
strategy: routes::AuthStrategy {
|
||||||
|
password: Arc::new(PasswordStrategy::new(db_connection.clone())),
|
||||||
|
},
|
||||||
|
authentication: Arc::new(AuthenticationServiceImpl::new(
|
||||||
|
settings.auth.jwt_secret.clone(),
|
||||||
|
)),
|
||||||
|
},
|
||||||
|
user: Arc::new(UserServiceImpl::new(db_connection.clone())),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user