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#[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 }
53#[derive(Clone, Debug, Deserialize)]
54pub struct ToolsConfig {
55 #[cfg(any(feature = "mysql", feature = "mssql", feature = "sqlite"))]
56 pub db: DbConfig,
57 #[cfg(feature = "cache")]
58 pub cache: CacheConfig,
59 #[cfg(feature = "kafka")]
60 pub kafka: KafkaConfig,
61}
62impl ToolsConfig {
63 pub fn create(config_file: PathBuf) -> Self {
64 Self {
65 #[cfg(any(feature = "mysql", feature = "mssql", feature = "sqlite"))]
66 db: DbConfig::create(config_file.clone()),
67 #[cfg(feature = "cache")]
68 cache: CacheConfig::create(config_file.clone()),
69 #[cfg(feature = "kafka")]
70 kafka: KafkaConfig::create(config_file.clone()),
71 }
72 }
73}