lynx_core/
server_context.rs

1use 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
19// Set up the context for the server
20pub 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}