aboutsummaryrefslogtreecommitdiffstats
path: root/src/config/cli/cache
diff options
context:
space:
mode:
authorrtkay123 <dev@kanjala.com>2026-02-03 13:45:46 +0200
committerrtkay123 <dev@kanjala.com>2026-02-03 13:45:46 +0200
commiteb2e86997d47249aa31b703598de13ab2eb96caa (patch)
tree9a591adee7d027b305d07a04987b5559b99f4d37 /src/config/cli/cache
parent0ea3cb1d4743b922fbc6e07037096e75caffba8f (diff)
downloadsellershut-eb2e86997d47249aa31b703598de13ab2eb96caa.tar.bz2
sellershut-eb2e86997d47249aa31b703598de13ab2eb96caa.zip
feat: add cacheHEADmaster
Diffstat (limited to 'src/config/cli/cache')
-rw-r--r--src/config/cli/cache/mod.rs46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/config/cli/cache/mod.rs b/src/config/cli/cache/mod.rs
new file mode 100644
index 0000000..04b36bc
--- /dev/null
+++ b/src/config/cli/cache/mod.rs
@@ -0,0 +1,46 @@
+use clap::{Parser, ValueEnum};
+use serde::Deserialize;
+use url::Url;
+
+#[derive(Debug, Clone, Parser, Deserialize, Default)]
+pub struct Cache {
+ /// Cache connection string
+ #[arg(long, env = "CACHE_URL", default_value = "redis://localhost:6379")]
+ pub cache_url: Option<Url>,
+ #[arg(long, env = "CACHE_POOL_ENABLED", default_value = "true")]
+ pub cache_pooled: Option<bool>,
+ #[serde(rename = "type")]
+ #[arg(long, env = "CACHE_TYPE", default_value = "non-clustered")]
+ pub cache_type: Option<RedisVariant>,
+ #[serde(default = "default_max_conns")]
+ #[serde(rename = "max-connections")]
+ #[arg(long, env = "CACHE_MAX_CONNECTIONS", default_value = "100")]
+ pub cache_max_conn: Option<u16>,
+ #[command(flatten)]
+ pub sentinel_config: SentinelConfig,
+}
+
+#[derive(Debug, Deserialize, Clone, ValueEnum)]
+#[serde(rename_all = "kebab-case")]
+pub enum RedisVariant {
+ Clustered,
+ NonClustered,
+ Sentinel,
+}
+
+fn default_max_conns() -> Option<u16> {
+ Some(100)
+}
+
+#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Parser, Default)]
+pub struct SentinelConfig {
+ #[serde(rename = "sentinel_service_name")]
+ #[arg(long, env = "CACHE_SENTINEL_NAME", default_value = "true")]
+ pub service_name: Option<String>,
+ #[serde(default)]
+ #[arg(long, env = "CACHE_TLS_MODE_SECURE")]
+ pub cache_tls_mode_secure: bool,
+ #[serde(default)]
+ #[arg(long, env = "CACHE_USE_RESP3")]
+ pub cache_use_resp3: bool,
+}