use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum StoreBackend {
#[default]
Memory,
Redis,
Sql,
Mongo,
Surreal,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StoreConfig {
#[serde(default)]
pub session_backend: StoreBackend,
#[serde(default)]
pub execution_backend: StoreBackend,
#[serde(default)]
pub run_backend: StoreBackend,
#[serde(default)]
pub embedding_backend: StoreBackend,
#[serde(default)]
pub artifact_backend: StoreBackend,
#[serde(default)]
pub redis_url: Option<String>,
#[serde(default)]
pub sql_url: Option<String>,
#[serde(default)]
pub mongo_url: Option<String>,
#[serde(default)]
pub surreal_url: Option<String>,
#[serde(default)]
pub qdrant_url: Option<String>,
#[serde(default = "default_qdrant_collection")]
pub qdrant_collection: String,
#[serde(default = "default_qdrant_dimensions")]
pub qdrant_dimensions: u64,
}
impl Default for StoreConfig {
fn default() -> Self {
Self {
session_backend: StoreBackend::Memory,
execution_backend: StoreBackend::Memory,
run_backend: StoreBackend::Memory,
embedding_backend: StoreBackend::Memory,
artifact_backend: StoreBackend::Memory,
redis_url: None,
sql_url: None,
mongo_url: None,
surreal_url: None,
qdrant_url: None,
qdrant_collection: default_qdrant_collection(),
qdrant_dimensions: default_qdrant_dimensions(),
}
}
}
fn default_qdrant_collection() -> String {
String::new()
}
const fn default_qdrant_dimensions() -> u64 {
1536
}