use std::net::SocketAddr;
use std::path::PathBuf;
use anyhow::Result;
use surrealdb_core::CommunityComposer;
use surrealdb_core::options::EngineOptions;
use crate::ntw::client_ip::ClientIp;
#[async_trait::async_trait]
pub trait ConfigCheck: Send + Sync + 'static {
async fn check_config(&mut self, _cfg: &Config) -> Result<()>;
}
#[async_trait::async_trait]
impl ConfigCheck for CommunityComposer {
async fn check_config(&mut self, _cfg: &Config) -> Result<()> {
Ok(())
}
}
#[derive(Clone, Debug)]
pub struct Config {
pub bind: SocketAddr,
pub postgres_bind: Option<SocketAddr>,
pub path: String,
pub client_ip: ClientIp,
pub user: Option<String>,
pub pass: Option<String>,
pub crt: Option<PathBuf>,
pub key: Option<PathBuf>,
pub engine: EngineOptions,
pub no_identification_headers: bool,
pub allow_origin: Vec<String>,
pub durable_session_ttl: Option<std::time::Duration>,
}