cat_gateway/rbac/
chains_cache.rs1use catalyst_types::catalyst_id::CatalystId;
4use rbac_registration::registration::cardano::RegistrationChain;
5
6use crate::{
7 db::index::session::CassandraSession,
8 metrics::caches::rbac::{
9 rbac_persistent_chains_cache_hits_inc, rbac_persistent_chains_cache_miss_inc,
10 },
11};
12
13pub fn cache_persistent_rbac_chain(id: CatalystId, chain: RegistrationChain) {
15 CassandraSession::get(true).inspect(|session| {
16 session.caches().rbac_persistent_chains().insert(id, chain);
17 });
18}
19
20pub fn cached_persistent_rbac_chain(
22 session: &CassandraSession, id: &CatalystId,
23) -> Option<RegistrationChain> {
24 let cache = session.caches().rbac_persistent_chains();
25 if !cache.is_enabled() {
26 return None;
27 }
28 cache
29 .get(id)
30 .inspect(|_| {
31 rbac_persistent_chains_cache_hits_inc();
32 })
33 .or_else(|| {
34 rbac_persistent_chains_cache_miss_inc();
35 None
36 })
37}