use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct McpConfig {
pub enabled: bool,
pub transport: String,
pub path: String,
pub require_auth: bool,
#[serde(default)]
pub include: Vec<String>,
#[serde(default)]
pub exclude: Vec<String>,
}
impl Default for McpConfig {
fn default() -> Self {
Self {
enabled: false,
transport: "http".to_string(),
path: "/mcp".to_string(),
require_auth: true,
include: Vec::new(),
exclude: Vec::new(),
}
}
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct ValidationConfig {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_query_depth: Option<u32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_query_complexity: Option<u32>,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct DebugConfig {
pub enabled: bool,
pub database_explain: bool,
pub expose_sql: bool,
}
impl Default for DebugConfig {
fn default() -> Self {
Self {
enabled: false,
database_explain: false,
expose_sql: true,
}
}
}