use std::path::PathBuf;
use serde::{Deserialize, Serialize};
use super::defaults::{
default_clickhouse_https, default_elasticsearch_https, default_postgres_ssl_mode,
default_redis_ssl, default_tls_min_version, default_verify_certs,
};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
#[serde(rename_all = "kebab-case")]
#[non_exhaustive]
pub enum PlaygroundTool {
GraphiQL,
#[default]
ApolloSandbox,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TlsServerConfig {
pub enabled: bool,
pub cert_path: PathBuf,
pub key_path: PathBuf,
#[serde(default)]
pub require_client_cert: bool,
#[serde(default)]
pub client_ca_path: Option<PathBuf>,
#[serde(default = "default_tls_min_version")]
pub min_version: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DatabaseTlsConfig {
#[serde(default = "default_postgres_ssl_mode")]
pub postgres_ssl_mode: String,
#[serde(default = "default_redis_ssl")]
pub redis_ssl: bool,
#[serde(default = "default_clickhouse_https")]
pub clickhouse_https: bool,
#[serde(default = "default_elasticsearch_https")]
pub elasticsearch_https: bool,
#[serde(default = "default_verify_certs")]
pub verify_certificates: bool,
#[serde(default)]
pub ca_bundle_path: Option<PathBuf>,
}