Skip to main content

objectiveai_cli/filesystem/config/
config.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(
4    Debug, Clone, Default, Serialize, Deserialize, schemars::JsonSchema,
5)]
6#[schemars(rename = "filesystem.config.Config")]
7pub struct Config {
8    #[serde(skip_serializing_if = "super::ApiConfig::is_none")]
9    #[schemars(extend("omitempty" = true))]
10    pub api: Option<super::ApiConfig>,
11    #[serde(skip_serializing_if = "super::DbConfig::is_none")]
12    #[schemars(extend("omitempty" = true))]
13    pub db: Option<super::DbConfig>,
14    #[serde(skip_serializing_if = "super::McpConfig::is_none")]
15    #[schemars(extend("omitempty" = true))]
16    pub mcp: Option<super::McpConfig>,
17}
18
19impl Config {
20    pub fn api(&mut self) -> &mut super::ApiConfig {
21        self.api.get_or_insert_with(super::ApiConfig::default)
22    }
23
24    pub fn db(&mut self) -> &mut super::DbConfig {
25        self.db.get_or_insert_with(super::DbConfig::default)
26    }
27
28    pub fn mcp(&mut self) -> &mut super::McpConfig {
29        self.mcp.get_or_insert_with(super::McpConfig::default)
30    }
31
32    pub fn jq(
33        &self,
34        filter: &str,
35    ) -> Result<Vec<serde_json::Value>, super::super::Error> {
36        super::super::run_jq(self, filter)
37    }
38}