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
10#[cfg(feature = "kafka")]
11use br_kafka::Kafka;
12use serde::Deserialize;
13use std::path::PathBuf;
14
15/// 配置文件
16#[derive(Clone)]
17pub struct Tools {
18    #[cfg(any(feature = "mysql", feature = "mssql", feature = "sqlite"))]
19    pub db: Db,
20    #[cfg(feature = "cache")]
21    pub cache: Cache,
22    #[cfg(feature = "kafka")]
23    pub kafka: Kafka,
24}
25impl Tools {
26    pub fn new(config: ToolsConfig) -> Result<Self, String> {
27        Ok(Self {
28            #[cfg(any(feature = "mysql", feature = "mssql", feature = "sqlite"))]
29            db: Db::new(config.db)?,
30            #[cfg(feature = "cache")]
31            cache: Cache::new(config.cache)?,
32            #[cfg(feature = "kafka")]
33            kafka: Kafka::new(config.kafka)?,
34        })
35    }
36}
37#[derive(Clone, Debug, Deserialize)]
38pub struct ToolsConfig {
39    #[cfg(any(feature = "mysql", feature = "mssql", feature = "sqlite"))]
40    pub db: DbConfig,
41    #[cfg(feature = "cache")]
42    pub cache: CacheConfig,
43    #[cfg(feature = "kafka")]
44    pub kafka: KafkaConfig,
45}
46impl ToolsConfig {
47    pub fn create(config_file: PathBuf) -> Self {
48        Self {
49            #[cfg(any(feature = "mysql", feature = "mssql", feature = "sqlite"))]
50            db: DbConfig::create(config_file.clone(), true),
51            #[cfg(feature = "cache")]
52            cache: CacheConfig::create(config_file.clone(), true),
53            #[cfg(feature = "kafka")]
54            kafka: KafkaConfig::create(config_file.clone(), true),
55        }
56    }
57}