lynx_core/
server_context.rs1use once_cell::sync::OnceCell;
2use sea_orm::DatabaseConnection;
3
4use crate::{
5 cert::{set_up_ca_manager, CertificateAuthority},
6 config::{set_up_config_dir, AppConfig, InitAppConfigParams},
7 entities::set_up_db,
8};
9
10pub static APP_CONFIG: OnceCell<AppConfig> = OnceCell::new();
11pub static CA_MANAGER: OnceCell<CertificateAuthority> = OnceCell::new();
12pub static DB: OnceCell<DatabaseConnection> = OnceCell::new();
13
14#[derive(Debug, Default)]
15pub struct InitContextParams {
16 pub init_app_config_params: InitAppConfigParams,
17}
18
19pub async fn set_up_context(init_context_params: InitContextParams) {
21 let app_config = set_up_config_dir(init_context_params.init_app_config_params);
22 CA_MANAGER.get_or_init(|| set_up_ca_manager(&app_config));
23 let db = set_up_db(&app_config).await;
24 DB.get_or_init(|| db);
25 APP_CONFIG.get_or_init(|| app_config.clone());
26}