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(
15 id: CatalystId,
16 chain: RegistrationChain,
17) {
18 CassandraSession::get(true).inspect(|session| {
19 session.caches().rbac_persistent_chains().insert(id, chain);
20 });
21}
22
23pub fn cached_persistent_rbac_chain(
25 session: &CassandraSession,
26 id: &CatalystId,
27) -> Option<RegistrationChain> {
28 let cache = session.caches().rbac_persistent_chains();
29 if !cache.is_enabled() {
30 return None;
31 }
32 cache
33 .get(id)
34 .inspect(|_| {
35 rbac_persistent_chains_cache_hits_inc();
36 })
37 .or_else(|| {
38 rbac_persistent_chains_cache_miss_inc();
39 None
40 })
41}