use serde::{Deserialize, Serialize};
use std::net::SocketAddr;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Config {
pub http: HttpConfig,
}
#[cfg(feature = "grpc")]
impl Config {
pub fn grpc(&self) -> GrpcConfig {
GrpcConfig::default()
}
}
#[cfg(feature = "tui")]
impl Config {
pub fn tui(&self) -> TuiConfig {
TuiConfig::default()
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HttpConfig {
pub bind: SocketAddr,
pub max_body_size: usize,
}
impl Default for HttpConfig {
fn default() -> Self {
Self {
bind: "0.0.0.0:8080".parse().expect("valid default address"),
max_body_size: 10 * 1024 * 1024, }
}
}
#[cfg(feature = "grpc")]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GrpcConfig {
pub bind: SocketAddr,
}
#[cfg(feature = "grpc")]
impl Default for GrpcConfig {
fn default() -> Self {
Self {
bind: "0.0.0.0:50051".parse().expect("valid default address"),
}
}
}
#[cfg(feature = "tui")]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TuiConfig {
pub enabled: bool,
}
#[cfg(feature = "tui")]
impl Default for TuiConfig {
fn default() -> Self {
Self { enabled: false }
}
}
impl Config {
pub fn load() -> anyhow::Result<Self> {
Ok(Self {
http: HttpConfig::default(),
})
}
}