nestrs-cache-manager 0.1.0

Rust port of @nestjs/cache-manager backed by moka.
Documentation
//! Port map for upstream `lib/interfaces/cache-module.interface.ts`.

use serde::{Deserialize, Serialize};

use super::CacheManagerOptions;

pub type CacheOptions = CacheManagerOptions;

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
pub struct CacheModuleOptions {
    #[serde(flatten)]
    pub cache_options: CacheOptions,
    pub isGlobal: Option<bool>,
}

impl CacheModuleOptions {
    pub fn new(cache_options: CacheOptions) -> Self {
        Self {
            cache_options,
            isGlobal: None,
        }
    }

    pub fn global(mut self, is_global: bool) -> Self {
        self.isGlobal = Some(is_global);
        self
    }
}

pub trait CacheOptionsFactory {
    fn createCacheOptions(&self) -> CacheOptions;
}

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
pub struct CacheModuleAsyncOptions {
    pub imports: Vec<String>,
    pub useExisting: Option<String>,
    pub useClass: Option<String>,
    pub useFactory: bool,
    pub inject: Vec<String>,
    pub extraProviders: Vec<String>,
    pub isGlobal: Option<bool>,
    pub options: Option<CacheOptions>,
}