1use std::collections::HashMap;
8use std::sync::Arc;
9
10use tokio::sync::RwLock;
11
12use zvault_core::approle::AppRoleStore;
13use zvault_core::audit::AuditManager;
14use zvault_core::barrier::Barrier;
15use zvault_core::database::DatabaseEngine;
16use zvault_core::engine::KvEngine;
17use zvault_core::lease::LeaseManager;
18use zvault_core::mount::MountManager;
19use zvault_core::pki::PkiEngine;
20use zvault_core::policy::PolicyStore;
21use zvault_core::seal::SealManager;
22use zvault_core::token::TokenStore;
23use zvault_core::transit::TransitEngine;
24
25use crate::config::SpringOAuthConfig;
26
27pub struct AppState {
29 pub barrier: Arc<Barrier>,
31 pub seal_manager: Arc<SealManager>,
33 pub token_store: Arc<TokenStore>,
35 pub policy_store: Arc<PolicyStore>,
37 pub mount_manager: Arc<MountManager>,
39 pub audit_manager: Arc<AuditManager>,
41 pub lease_manager: Arc<LeaseManager>,
43 pub kv_engines: RwLock<HashMap<String, Arc<KvEngine>>>,
45 pub transit_engines: RwLock<HashMap<String, Arc<TransitEngine>>>,
47 pub database_engines: RwLock<HashMap<String, Arc<DatabaseEngine>>>,
49 pub pki_engines: RwLock<HashMap<String, Arc<PkiEngine>>>,
51 pub approle_store: Option<Arc<AppRoleStore>>,
53 pub spring_oauth: Option<SpringOAuthConfig>,
55 pub audit_file_path: Option<String>,
57}
58
59impl std::fmt::Debug for AppState {
60 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
61 f.debug_struct("AppState").finish_non_exhaustive()
62 }
63}