use anyhow::Result;
use serde::Deserialize;
#[derive(Debug, Deserialize, Clone)]
pub struct Config {
pub game: GameBaseSetting,
pub master_db: SingleDB,
pub redis: RedisConfig,
pub clickhouse: ClickHouseConfig,
pub clickhouse_replay: ClickHouseConfig,
}
impl Config {
pub fn load_config(content: &str) -> Result<Self> {
Ok(toml::from_str(content)?)
}
}
#[derive(Deserialize, Debug, Clone)]
pub struct GameBaseSetting {
pub marquess_delay_time: u64,
pub robot_seating_min_time: u32,
pub robot_seating_max_time: u32,
pub robot_leave_min_time: u32,
pub robot_leave_max_time: u32,
pub robot_spin_min_time: u32,
pub robot_spin_max_time: u32,
#[serde(default = "default_lottery_control_flush_time")]
pub lottery_control_flush_time: i32,
}
fn default_lottery_control_flush_time() -> i32 {
30
}
#[derive(Deserialize, Debug, Clone)]
pub struct SingleDB {
pub mysql_url: String,
pub mysql_max_connections: u32,
}
#[derive(Deserialize, Debug, Clone)]
pub struct RedisConfig {
pub redis_url: String,
pub redis_index: Option<i32>,
}
#[derive(Deserialize, Debug, Clone)]
pub struct ClickHouseConfig {
pub url: String,
pub username: String,
pub password: String,
pub database: String,
}