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::ViewerConfig::is_none")]
15    #[schemars(extend("omitempty" = true))]
16    pub viewer: Option<super::ViewerConfig>,
17    #[serde(skip_serializing_if = "super::McpConfig::is_none")]
18    #[schemars(extend("omitempty" = true))]
19    pub mcp: Option<super::McpConfig>,
20}
21
22impl Config {
23    pub fn api(&mut self) -> &mut super::ApiConfig {
24        self.api.get_or_insert_with(super::ApiConfig::default)
25    }
26
27    pub fn db(&mut self) -> &mut super::DbConfig {
28        self.db.get_or_insert_with(super::DbConfig::default)
29    }
30
31    pub fn viewer(&mut self) -> &mut super::ViewerConfig {
32        self.viewer.get_or_insert_with(super::ViewerConfig::default)
33    }
34
35    pub fn mcp(&mut self) -> &mut super::McpConfig {
36        self.mcp.get_or_insert_with(super::McpConfig::default)
37    }
38
39    pub fn jq(
40        &self,
41        filter: &str,
42    ) -> Result<Vec<serde_json::Value>, super::super::Error> {
43        super::super::run_jq(self, filter)
44    }
45}