br_addon/
tools.rs

1#[cfg(feature = "cache")]
2use br_cache::{Cache, Config as CacheConfig};
3#[cfg(any(feature = "mysql", feature = "mssql", feature = "sqlite"))]
4use br_db::config::Config as DbConfig;
5#[cfg(any(feature = "mysql", feature = "mssql", feature = "sqlite"))]
6use br_db::Db;
7#[cfg(feature = "kafka")]
8use br_kafka::Config as KafkaConfig;
9#[cfg(feature = "kafka")]
10use br_kafka::Kafka;
11
12#[cfg(feature = "email")]
13use br_email::{Mail,Config as EmailConfig};
14use serde::Deserialize;
15use std::path::PathBuf;
16
17/// 配置文件
18#[derive(Clone)]
19pub struct Tools {
20    #[cfg(any(feature = "mysql", feature = "mssql", feature = "sqlite"))]
21    pub db: Db,
22    #[cfg(feature = "cache")]
23    pub cache: Cache,
24    #[cfg(feature = "kafka")]
25    pub kafka: Kafka,
26    #[cfg(feature = "email")]
27    pub email: Mail,
28}
29impl Tools {
30    pub fn new(config: ToolsConfig) -> Result<Self, String> {
31        Ok(Self {
32            #[cfg(any(feature = "mysql", feature = "mssql", feature = "sqlite"))]
33            db: Db::new(config.db)?,
34            #[cfg(feature = "cache")]
35            cache: Cache::new(config.cache)?,
36            #[cfg(feature = "kafka")]
37            kafka: Kafka::new(config.kafka)?,
38            #[cfg(feature = "email")]
39            email: Mail::new_new(config.email)?,
40        })
41    }
42}
43#[derive(Clone, Debug, Deserialize)]
44pub struct ToolsConfig {
45    #[cfg(any(feature = "mysql", feature = "mssql", feature = "sqlite"))]
46    pub db: DbConfig,
47    #[cfg(feature = "cache")]
48    pub cache: CacheConfig,
49    #[cfg(feature = "kafka")]
50    pub kafka: KafkaConfig,
51    #[cfg(feature = "email")]
52    pub email: EmailConfig,
53}
54impl ToolsConfig {
55    pub fn create(config_file: PathBuf) -> Self {
56        Self {
57            #[cfg(any(feature = "mysql", feature = "mssql", feature = "sqlite"))]
58            db: DbConfig::create(config_file.clone(), true),
59            #[cfg(feature = "cache")]
60            cache: CacheConfig::create(config_file.clone(), true),
61            #[cfg(feature = "kafka")]
62            kafka: KafkaConfig::create(config_file.clone(), true),
63            #[cfg(feature = "email")]
64            email: EmailConfig::create(config_file.clone(), true),
65        }
66    }
67}