use std::sync::Arc;
use dashmap::DashMap;
use rustack_cloudfront_model::{
CachePolicy, CloudFrontFunction, CloudFrontOriginAccessIdentity, Distribution,
FieldLevelEncryption, FieldLevelEncryptionProfile, Invalidation, KeyGroup, KeyValueStore,
MonitoringSubscription, OriginAccessControl, OriginRequestPolicy, PublicKey, RealtimeLogConfig,
ResponseHeadersPolicy, TagSet,
};
#[derive(Debug, Default)]
pub struct CloudFrontStore {
pub distributions: DashMap<String, Distribution>,
pub invalidations: DashMap<(String, String), Invalidation>,
pub origin_access_controls: DashMap<String, OriginAccessControl>,
pub origin_access_identities: DashMap<String, CloudFrontOriginAccessIdentity>,
pub cache_policies: DashMap<String, CachePolicy>,
pub origin_request_policies: DashMap<String, OriginRequestPolicy>,
pub response_headers_policies: DashMap<String, ResponseHeadersPolicy>,
pub key_groups: DashMap<String, KeyGroup>,
pub public_keys: DashMap<String, PublicKey>,
pub functions: DashMap<String, CloudFrontFunction>,
pub fle_configs: DashMap<String, FieldLevelEncryption>,
pub fle_profiles: DashMap<String, FieldLevelEncryptionProfile>,
pub monitoring_subscriptions: DashMap<String, MonitoringSubscription>,
pub key_value_stores: DashMap<String, KeyValueStore>,
pub realtime_log_configs: DashMap<String, RealtimeLogConfig>,
pub tags: DashMap<String, TagSet>,
}
impl CloudFrontStore {
#[must_use]
pub fn new() -> Arc<Self> {
Arc::new(Self::default())
}
}