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;
#[cfg_attr(target_family = "wasm", async_trait::async_trait(?Send))]
#[cfg_attr(not(target_family = "wasm"), async_trait::async_trait)]
pub trait ConfigCheck: ConfigCheckRequirements {
async fn check_config(&mut self, _cfg: &Config) -> Result<()>;
}
#[cfg(target_family = "wasm")]
pub trait ConfigCheckRequirements {}
#[cfg(not(target_family = "wasm"))]
pub trait ConfigCheckRequirements: Send + Sync + 'static {}
#[cfg_attr(target_family = "wasm", async_trait::async_trait(?Send))]
#[cfg_attr(not(target_family = "wasm"), async_trait::async_trait)]
impl ConfigCheck for CommunityComposer {
async fn check_config(&mut self, _cfg: &Config) -> Result<()> {
Ok(())
}
}
impl ConfigCheckRequirements for CommunityComposer {}
#[derive(Clone, Debug)]
pub struct Config {
pub bind: 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>,
}